Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I saw someone suggesting .NET Reactor once as a good obfuscator. I went to their website to check it out and saw they have a product called IntelliLock which is advertised as a pretty robust licensing system which has code protection/obfuscation built in.

With that said, I tried to contact them and ask them a few questions regarding the product, but have not had any response. This is kind of a red flag for me. However, it seems like there is some user base for this product whom are satisfied.

What .NET licensing system(s) with .NET code protection/obfuscation are you using? What are its pros & cons that you have encountered? Are there things I should be looking for or looking to avoid when evaluating these systems?

share|improve this question

closed as not constructive by gnat, Martijn Pieters, MichaelT, Thomas Owens Mar 19 '13 at 14:40

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.If this question can be reworded to fit the rules in the help center, please edit the question.

    
As a side note, once you do decide on something, I'd highly recommend hiring a white-hat cracker to test your software and installers, they will help you find and close holes in your licensing scheme to help prevent crackers from cracking your software. Disclaimer: It's impossible to completely prevent cracking, the best you can do is make it not worth the time to crack. –  blesh Apr 6 '12 at 17:29
    
Hire some of my ex-coworkers... no one will figure out the code. –  DevSolo Apr 6 '12 at 18:33
add comment

6 Answers

We use SmartAssembly for our shipping assemblies, and personally I am not really a big fan of the concept, but TPTB have determined that it is necessary, so that's just the way it is.

What you will want to watch out for are cases where you are using reflection since reflection utilizes string literals, they will no longer match up with method names after the obfuscation mangles the names. My specific issue with reflection was with binding a data set to a UI control where my data elements implemented INotifyPropertyChanged.

You also have to watch out for "pruning" which is an optimization option where unreferenced code is removed from the assembly. This is usually handled properly when compiling a library .dll, but can cause problems in .exe assemblies (again, due to reflection directly referencing methods).

share|improve this answer
    
I thought SmartAssembly was just an obfuscation tool. Does it have license management stuff in it too like Intellilock? –  Adam Sep 9 '11 at 14:12
    
That is correct, SA is only for obfuscation. We use a hardware dongle for our licensing. –  DaveNay Sep 9 '11 at 14:36
add comment

Take a look at our Crypto Obfuscator (for obfuscation and code protection) + CryptoLicensing (for licensing, activation, copy-protection) products. They will provide nice protection to your .Net app.

DISCLAIMER: I work for LogicNP, the developers of these products.

share|improve this answer
add comment

Skater .NET Licenser is Software Authorization tool designed specifically to help secure .NET software programs and to provide license control and user validation services. You can choose between two ways on how to implement your application licensing by using .NET Licenser. There are .NET Licenser interface that is incorporated in Skater .NET Obfuscator and .NET Licenser API assembly that is a stand-alone .NET library. By using Skater .NET Licenser interface you will be able to implement licensing without coding. However this way has some restrictions. .NET Licenser API assembly gives you ability to program the licensing features in your application source code. By using .NET Licenser API you will be able bound your licensed application with user's hardware and check user PC unique code trough authentication web-service. Also by using the web-service you may block your application at user's PC if a license has been refunded by user.

share|improve this answer
add comment

I've had good experiences evaluating WIBU Codemeter for this purpose. WIBU has both a rock-solid hardware method (USB dongle) for protection, and a slightly less hardened CodeMeterACT software method that doesn't require a dongle.

You can check their website for more info, but the salient points are:

  • They use strong encryption of your assemblies with a rapidly changing key, making it extremely difficult to reverse engineer an assembly.
  • They have all kinds of tampering detection, from detecting the attaching of debuggers to actual physical tampering with the hardware dongle
  • Their licensing system is very flexible, though there is a (smallish) fee per license
  • They have always seemed like a trustworthy company - they've been very open to me about the increased risk of the software-only version, and seem dedicated to actual security, not just theater.
share|improve this answer
add comment

You could also look at Dotfuscator.

The reason for all this is that if you do nothing, Redgate Reflector will allow your (source) code (or as good as) to be viewed by anybody who pays the small fee.

share|improve this answer
2  
Decompilers like ILSpy or DotPeek are free and can cope with obfuscated code better than Reflector. But unless the obfuscator can exploit a bug in the decompiler and cause it to crash, obfuscation can only make the code less readable (rename methods, introduce 'goto's in control flow), but it can never really prevent someone from reading the code. –  Daniel Sep 8 '11 at 18:12
    
True. But the obfuscated code is so hideous to try and understand that you need the patience of a saint to persevere with it. If you do nothing, then the readability of your code is frightening. –  quickly_now Sep 9 '11 at 0:47
1  
I'm pretty sure Dotfuscator is only an obfuscation tool and is not a licensing system at all. –  Adam Sep 9 '11 at 14:12
    
Question refers to Obfuscation/licensing. Dotfuscator is an obfuscator, it is definitely not a licensing system. If you want licensing, there are a number of (commercial) possibilities. –  quickly_now Sep 10 '11 at 11:46
add comment

Please take a look at License Manager System called SecureOnCloud. This is a floating licensing system thought for .NET developers. This offers a ready-to-integrate Licensing System for .NET Developers at a really affordable price.

It has a License Manager and a .NET dll than can be easily plugged in your code. There is a free demo and free client source code available to download. There is also a License Generator tool that allows generating a number of licenses (from one to unlimited) that can be valid simultaneously against the License Manager. In Premium version you have the full source code available. The code is properly dotfuscated to avoid piracy.

DISCLAIMER: I am one of the developers of the above product.

share|improve this answer
add comment

Not the answer you're looking for? Browse other questions tagged or ask your own question.