Have a sophisticated .NET solution?
And very curious competitors?
Got something valuable to hide?
Take action and protect your investment!
SEEUNSHARP .NET OBFUSCATOR

Did you know that your source code can easily be recovered from the compiled .NET assembly? Most of the names from the original source code are stored in the compiled program as metadata: namespaces, classes, methods, parameters, properties, and more. The first tool to decompile an assembly back to C# code was the famous .NET Reflector, and you can use the free ILSpy to convince yourself how easy it is.

Code obfuscation comes to the rescue: SeeUnsharp .NET Obfuscator will scramble everything in the assembly file to make it unreadable and almost impossible to follow! Now your secrets belong to you and your application cannot be modified or hacked anymore with simple edits. Unlike basic file encryption tools, the application remains executable as-is because the computer doesn’t care about the original source names. In a .NET assembly, everything is linked together through internal references and those remain in place.

Oh, and don’t even try to do that yourself in the source code! You really want to write code that can be understood by other developers (including future you). Only when it’s compiled then there must be an end to this descriptiveness.

Here’s an example of what SeeUnsharp .NET Obfuscator can do:

Original, decompiled:
internal class GitProvider : IVcsProvider { public string Name => "git"; private static bool Is64Bit => IntPtr.Size == 8 || !string.IsNullOrEmpty( Environment.GetEnvironmentVariable( "PROCESSOR_ARCHITEW6432")); public bool CheckEnvironment() { Program.ShowDebugMessage( "Git environment check…", 0); gitExec = FindGitBinary(); if (gitExec == null) { Program.ShowDebugMessage( " git executable not found.", 2); return false; } return true; } }
Obfuscated with SeeUnsharp, decompiled:
internal class : { public string => .; private static bool => . == 8 || !.(.(.)); public bool () { .(., 0); = (); if ( == null) { .(., 2); return false; } return true; } }