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

  1. Build in Release.
  2. Upload the managed assembly — the .exe on .NET Framework, or the same-named .dll on .NET Core / .NET 5+.
  3. Leave "obfuscate public names" on for an app; download YourApp.obfuscated.*.
  4. 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.