As you are probably aware, compiled .Net code is compiled to IL (Intermediate Language) and not to machine code. This means that it is trivially easy to reverse engineer an exe or dll and see the source code using tools like Reflector or the ildasm.exe
This of course opens up the problem of how to protect your Intellectual property for applications you distribute to clients. The traditional answer has been obfuscation - a way of making the code hard to understand, but still allowing it to be disassembled. Commerical obfuscators include: Dotfuscator from Premeptive, and Salamander from RemoteSoft
But there are a couple of alternative solutions that you can now invest in (that I am aware of), that offer a more robust protection mechanism:
- Thinstall from .Net Support (http://thinstall.com/help/?_netsupport.htm) - "prevents .NET IL byte code disassembly while maintaining 100% capability" and also has some other interesting features such as zero install, and automatic detection of the framework (and prompt to install if not present)
- .NET Protector - from RemoteSoft (http://www.remotesoft.com/salamander/protector.html) - " it converts the decompilable Microsoft Intermediate Language code (MSIL or CIL) of your assemblies into native format while keeping all .NET metadata intact, and thus it provides the same level of protection as native C/C++ code."
If IP of your apps is a concern, then evaluation of these products must be worth some of your time.
Cheers
Ian