Stop software from being decompiled

Is there a way to prevent someone from decompiling your .net app. Surely people like Microsoft and Adobe prevent it.
LVL 3
taz8020Asked:
Who is Participating?

[Product update] Infrastructure Analysis Tool is now available with Business Accounts.Learn More

x
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

ozoCommented:
0
taz8020Author Commented:
Is there a way of preventing it in stead of just telling them they are not allowed in the terms.
0
andreasSystem AdminCommented:
Actually it is impossible to prevent decompiling. you just can make it harder with .net obfuscation tools. But if somebody is really interested in your code this will not be of a big use. a good reading about can be found here.

http://stackoverflow.com/questions/2478230/how-can-i-protect-my-net-assemblies-from-decompilation
0
JavaScript Best Practices

Save hours in development time and avoid common mistakes by learning the best practices to use for JavaScript.

ozoCommented:
If you can control physical access to all machines on which the app exists, you might limit them to things like power-monitoring attacks and electromagnetic attacks.
0
taz8020Author Commented:
I take it that's why more and more people are doing web apps that look like desktop ones. How would use obfuscation?
0
andreasSystem AdminCommented:
Obfuscation is only useful against people who are not very sophisticated in programming. The obfuscator just rearranges your .net assemblies in a way that when decompiled the code looks very untidy and unclear.

But this bfuscated code still could be examined ran via debuggers, etc.

The obfuscator software just take your "compiled" .net assembly and scameles it and write the scrambled one back to a new file which is your "protected" version of the software.

But as told before this obfuscation is a weak protection only.
0
taz8020Author Commented:
If I wanted to what software would you recommend?
0
andreasSystem AdminCommented:
Sorry I cant answer this one, i know there is a commercial one from preemtive. But ive never used one myself. You can refer on the link i send you above, there are some suggestions of obfuscation tools.

I prefer not to obfuscate, if competitors want to steal they will, even you obfuscate. But you wont get good bug reports from others that can use debuggers and read code if its obfuscated.
0
käµfm³d 👽Commented:
I take it that's why more and more people are doing web apps that look like desktop ones.
I don't think so. I think they make web apps that look like desktop apps to give the "feel" of a desktop app, but have the ease of deployment of a web application. Having the ability to use a piece of software anywhere in the world without having to install something on each and every machine I touch is very convenient. Also, web applications tend to be a bit more secure in terms of access to the underlying system of the client machine.

But you wont get good bug reports from others that can use debuggers and read code if its obfuscated.
That's what logging is for  ; )

The obfuscator software just take your "compiled" .net assembly and scameles it and write the scrambled one back to a new file which is your "protected" version of the software.
True, but good ones also write in bad jump instructions and similar in order to prevent decompilation from succeeding.

...i know there is a commercial one from preemtive.
There's also a "community" edition from Preemptive which comes with the various flavors of Visual Studio. It's only good for personal use, though.
0
andreasSystem AdminCommented:
the bad jumps can be identified if necessary, Ive never tried but this software https://github.com/0xd4d/de4dot seems doing a quite good job on de obfuscating, including removing dead code. and sorting back out the created spaghetti-code.
0

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
.NET Programming

From novice to tech pro — start learning today.