If you deploy .NET assemblies on your client machines, then some kind of decompilation will always be possible using a reflector and similar tools.
However, this situation is not significantly different from what you came across if you wrote an application in native C ++. You can always decompile things - if this was not possible, the processor also could not understand it.
You can never defeat an expert cracker - they will consider your security as an intellectual riddle that will be solved only for a challenge.
The question revolves around how difficult it is to defeat your licensing practice and return on investment.
Sit down with a table and look at possible scenarios - the danger is probably less than you think.
Factors such as "ease of use" are visible in your software for any user to watch - so you think it's easy to copy. But a good user experience is rare (and rarely copied well), because most developers (including me) are not like ordinary users.
I would advise you to focus on making the cracker’s job more difficult, because you can never make it impossible, just unprofitable.
One opportunity to try: it is possible to precompile assemblies into native code as part of the installation process. Paint.NET does this for performance reasons. I believe that after you do this, you can abandon the original builds and use optimized native versions of the code.
Bevan Aug 16 '09 at 10:22 2009-08-16 10:22
source share