A .NET deobfuscator and unpacker that restores assemblies obfuscated by tools like Dotfuscator, SmartAssembly, and .NET Reactor.
de4dot is a .NET deobfuscator and unpacker that reverses the effects of commercial obfuscation tools to restore assemblies to a near-original state. It handles techniques like string encryption, control flow obfuscation, and anti-debugging, making obfuscated code readable and analyzable again. The tool supports a wide range of obfuscators, including Dotfuscator, SmartAssembly, and .NET Reactor.
Security researchers, reverse engineers, and .NET developers who need to analyze, audit, or recover code from obfuscated .NET assemblies, especially in malware analysis or legacy application maintenance.
Developers choose de4dot because it is a free, open-source alternative to commercial deobfuscation services, with extensive support for many obfuscators and active community-driven updates. Its ability to handle dynamic decryption and preserve metadata tokens offers flexibility for advanced use cases.
.NET deobfuscator and unpacker.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Supports over 20 common .NET obfuscators like Dotfuscator and SmartAssembly, making it versatile for analyzing most protected assemblies.
Reverses multiple techniques including string encryption, control flow obfuscation, and anti-debug code, restoring assemblies to a near-original state.
Allows specifying method tokens for custom string decryption via --strtok options, enabling support for unsupported obfuscators with manual effort.
Offers command-line flags like --preserve-tokens to maintain metadata integrity, useful for compatibility or further analysis in tools like peverify.
Explicitly states 'NO SUPPORT,' forcing users to rely on community forums or self-updates for issues, which can be a barrier for non-technical users.
Loads assemblies into memory for dynamic decryption, potentially executing malware if not sandboxed, as warned in the README for untrusted files.
Cannot restore original names; only renames symbols to generic readable strings, which may not suffice for detailed reverse engineering or debugging.