If you have an ASP.NET server, then create a service with a set of methods for you application that the client will call, so the "valuable" code will be stored on the server.
My point is, once the machine code is available to the client, reverse engineering is always possible.
If you're not looking for a 98% foolproof way, then there are several .NET obfuscation tools available for a charge.
scru
Posting Virtuoso
1,629 posts since Feb 2007
Reputation Points: 975
Solved Threads: 140
I'm sure you have already looked at obfuscation. That is about the best solution. If you are writing managed code, as in C#, it can be decompiled.
Here is a program that makes it harder than just plain obfuscation, but still doable, think its outdated now, but there might be something like it floating around.
http://www.remotesoft.com/salamander/protector.html
dickersonka
Veteran Poster
1,175 posts since Aug 2008
Reputation Points: 130
Solved Threads: 143
This is a pretty big issue when it comes to .Net applications. In case you haven't, I would read up on .Net Obfuscation , which is the simplest way to protect your applications.
RemoteSoft's Protector is more advanced, but definitely more powerful. I have used it in the past and it's very good. But nowadays Xenocode is a more up-to-date company with also some impressive software.
Just watch out for simple .Net encryptors, they don't really protect applications as well as they say.
vckicks
Junior Poster in Training
58 posts since Jun 2008
Reputation Points: 11
Solved Threads: 9
Looks interesting, although I've never heard of it before. Just as long as it encrypts .Net programs by parts instead of the entire application and then running it on memory, it should be okay.
vckicks
Junior Poster in Training
58 posts since Jun 2008
Reputation Points: 11
Solved Threads: 9
Only potential downside to that app is that it uses native code, as a result anyone trying to use mono or such would find it wouldnt run.
LizR
Posting Virtuoso
1,791 posts since Aug 2008
Reputation Points: 196
Solved Threads: 190
"Native code" is a very common term. Hence their website says so without explaination.
.net relys on a framework and is compiled and run at runtime. Native code is platform specific.. eg win32, linux etc, so as it compiles win32 ONLY code in, it wouldnt run on anything other than windows.
LizR
Posting Virtuoso
1,791 posts since Aug 2008
Reputation Points: 196
Solved Threads: 190