Skip to content

feat: add multi-stage native and Wine-based Docker containers#34

Open
doomedraven wants to merge 4 commits into
GDATAAdvancedAnalytics:masterfrom
doomedraven:feat/docker-containerization
Open

feat: add multi-stage native and Wine-based Docker containers#34
doomedraven wants to merge 4 commits into
GDATAAdvancedAnalytics:masterfrom
doomedraven:feat/docker-containerization

Conversation

@doomedraven

Copy link
Copy Markdown

Summary

This PR introduces fully automated, multi-stage Docker containerization for de4dotEx. It enables running de4dotEx seamlessly as a cross-platform command-line utility or microservice under any standard Docker-enabled host.

Key Changes

  1. Strategy A: Native .NET 8.0 Linux Container (Dockerfile):

    • Uses a multi-stage build starting with an Ubuntu stage to compile the native C++ BeaEngine (libBeaEngine.so) disassembler library from source on Linux.
    • Leverages the official .NET 8.0 SDK to publish de4dot natively and packages it into a slim .NET runtime image.
    • Copies the compiled libBeaEngine.so to /usr/local/lib and registers it globally via ldconfig so it is automatically available for ConfuserEx control-flow disassembly.
  2. Strategy B: Wine-compatible .NET Framework 4.8 Container (Dockerfile.wine):

    • Employs a multi-stage Mono SDK (mono:6.12.0) builder stage to natively restore and compile the .NET Framework 4.8 solution (de4dot.netframework.sln) inside the container on Linux—meaning no pre-compilation or Windows host is required!
    • Packages the output into a headless Ubuntu container pre-configured with wine64 and wine packages natively.
    • Pre-downloads the official wine-mono-7.0.0-x86.msi package into Wine's global shared folder /usr/share/wine/mono/ at build-time, which wineboot -u automatically registers during bootstrap. This creates a completely self-contained, offline-compatible Wine .NET Framework prefix.
  3. Optimization and Client Utilities:

    • Includes .dockerignore to restrict local build files and temporary assets from polluting the build context.
    • Integrates comprehensive building, running, and troubleshooting documentation (including explicit Rosetta 2/QEMU --platform linux/amd64 instructions for Apple Silicon Mac hosts) directly into the primary README.md.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant