feat: add multi-stage native and Wine-based Docker containers#34
Open
doomedraven wants to merge 4 commits into
Open
feat: add multi-stage native and Wine-based Docker containers#34doomedraven wants to merge 4 commits into
doomedraven wants to merge 4 commits into
Conversation
…atform .NET Framework builds
…atform .NET Framework builds
…erization # Conflicts: # de4dot.code/ObfuscatedFile.cs
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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
Strategy A: Native .NET 8.0 Linux Container (
Dockerfile):libBeaEngine.so) disassembler library from source on Linux..NET 8.0 SDKto publishde4dotnatively and packages it into a slim .NET runtime image.libBeaEngine.soto/usr/local/liband registers it globally vialdconfigso it is automatically available for ConfuserEx control-flow disassembly.Strategy B: Wine-compatible .NET Framework 4.8 Container (
Dockerfile.wine):mono:6.12.0) builder stage to natively restore and compile the.NET Framework 4.8solution (de4dot.netframework.sln) inside the container on Linux—meaning no pre-compilation or Windows host is required!wine64andwinepackages natively.wine-mono-7.0.0-x86.msipackage into Wine's global shared folder/usr/share/wine/mono/at build-time, whichwineboot -uautomatically registers during bootstrap. This creates a completely self-contained, offline-compatible Wine .NET Framework prefix.Optimization and Client Utilities:
.dockerignoreto restrict local build files and temporary assets from polluting the build context.--platform linux/amd64instructions for Apple Silicon Mac hosts) directly into the primaryREADME.md.