EXE obfuscator
Obfuscate a .NET application — upload the .exe, get back a protected copy that runs the same. Free, in the browser.
One thing that trips people up on modern .NET
On .NET Framework, your .exe is the managed assembly — that is what you upload.
On .NET Core / .NET 5+, the .exe beside your build is a small
native launcher with no code in it; your IL actually lives in the same-named
.dll. So on modern .NET you upload the YourApp.dll, not the launcher
YourApp.exe. The obfuscator detects the real entry point either way and does the right
thing — a fix we made deliberately (see the changelog).
Applications can rename their public names too
A library must keep its public API readable so callers still bind — but an application is the end of the line: nothing external references its types by name. So for an executable you can turn on "obfuscate public names" and rename the public surface as well, not just private and internal members. That is decided by whether the assembly has an entry point, not by the file extension.
How to obfuscate a .NET EXE
- Build in Release.
- Upload the managed assembly — the
.exeon .NET Framework, or the same-named.dllon .NET Core / .NET 5+. - Leave "obfuscate public names" on for an app; download
YourApp.obfuscated.*. - Run it once before shipping — especially if it uses reflection or serialization by name (what breaks, and why).
What it does and does not do
Names are rewritten so a decompiler no longer hands over your structure. String literals stay readable unless you enable string encryption (Pro), and obfuscation is not a licensing system — the honest threat model covers where it helps and where it does not. Weighing options? The comparisons put us next to ConfuserEx, Dotfuscator and .NET Reactor.
Shipping a library instead of an app? See the DLL obfuscator — the rules around the public API are different.