Obfuscation alone is a worthless joke. All obfuscation does is turn easily-readable code into different but still easily-readable and still fully accessible code.
Anybody that has ever taken a look at hacker web sites knows that the technology and methods they use to crack an app takes seconds no matter what you did to obfuscate. The cracking tools that are available now make app cracking as easy as playing a video game. This can be incredibly discouraging and make you never want to release an app of any kind once you see how worthless obfuscation (and most other code protection products) really are.
In my opinion there is only one choice out there. Eazfuscator.NET. Allow me to explain:
0. Unlike CryptoLicensing/Obfuscator, Dotfuscator and many others, cracked copies of it can't be found on the torrent networks (think about this).
1. Brilliantly simplistic to use, never thought it could be so easy and effortlessly integrated into VS. A breath of fresh air.
2. Unlike other obfuscators, Eazfuscator JUST ALWAYS WORKS. I have never had a single problem.
3. Excellent cutting edge obfuscation
4. Code Virtualization: Utterly brilliant technology that makes cracking an app impossible (parts or all of your code runs in a dynamically encrypted virtual machine)
5. Assembly merging: Licensing assemblies can be directly merged and virtualized into your main assembly with no coding (!!!)
6. Perpetual license - no subscriptions
7. Low price: Only $399 and comes with year of support and upgrades (and only $99 anytime you want to add a year of support and upgrades at any time)
Overwhelmingly the best deal around for the quality, stability, reliability, and features it offers. Your app will NOT be cracked if it gets virtualized. This is the sole reason I bought this product, because there is no such thing as obfuscation that keeps an app safe. All obfuscation does is slow down an eventual crack, sometimes only by one day after release depending on the popularity of your software. Code virtualization is the only thing that works. Obfuscation alone is a joke.
On top of obfuscation and code virtualization, I also use strong naming, internalized code that checks for strong naming values in the certificates, and a l large number of differently and confusingly named functions that detect if the code is being stepped through. If so, the app creates a bunch of garbage and intentionally crashes. All obfuscated and virtualized, of course. These create absolute hell on any cracker trying to step through the code looking for licensing code - all of which is virtualized, by the way, so good luck even getting anywhere near that code to begin with. Use "round trip" methods to strip and replace my strong naming certificates and the code won't even start.
Hope this helps.
Highwinder