8

There are a few programs on the market that you can use to obfuscate your .net code, my question is, how easy is it for someone to get at your IP if your code is "so called" obfuscated.

Is obfuscating .net code merely rubber chicken security? Or is it good enough to really protect your intellectual property rights?

2
  • Are you asking about technological or legal protection? Because if it's closed source, I don't think you have to obfuscate to get legal protection, although you should consult a lawyer about that. Commented Sep 28, 2009 at 19:25
  • It's not specific to .NET, btw. Commented Sep 28, 2009 at 19:26

6 Answers 6

17

Obfuscation is like a door lock... it keeps the honest people honest.

Sign up to request clarification or add additional context in comments.

Comments

8

This completely depends on the Obfuscator.

Obfuscation, in general, does a very good job of making it much more difficult to reverse engineer - but it doesn't prevent it by any means. The CLR will always need to decipher the obfuscated IL, so a dedicated person can always do the same.

However, most software licensing and protection really does two things:

  • Prevents accidental overusage
  • Prevents casual attempts to circumvent licensing

Obfuscation (combined with a proper licensing scheme) prevents both of the above very effectively. It changes a simple procedure to a much more complicated task.

2 Comments

I thought I would try EazFuscator.net, it seems to work well, but I am not sure if its easy to crack or not.
It covers the basics, but enterprise level obfuscation will probably do a better job. It's all about your goals, though - sometimes, with things like this, you get what you pay for - but often, what you pay for isn't something you need. ;)
6

Different Obfuscators offer different levels of protection.

Some free code obfuscation is pretty easy to crack if you have somebody really determined to figure out what your code is doing.

Enterprise level obfuscation, on the other hand, can become nearly impossible to decipher with all the different obfuscation methods they use.

...in the end, though, somebody who really really wants your code is going to be able to figure it out given the time and determination.

3 Comments

obfuscation isn't about making it impossible to decipher someone else's code - its' about making that decipherment difficult enough that people give up.
If teenage hackers can break the copy protections schemes of non-managed code like Photoshop and Office, you can be fairly certain that someone dedicated to stealing your IP will be able to do so in a managed language like .NET regardless of the amount of obfuscation you throw in.
@DDavies & @LBushkin - That's my point. Obfuscation is by no means the perfect way to protect your code. If somebody wants it, they'll get it.
4

Obfuscation should never be confused for security.

.NET Reflector makes it pretty straightforward to reverse engineer most .NET code. You may not get pretty variable and method/method parameter names, but anyone interested in reverse engineering your intellectual property will have enough information to do so.

If you need stringent protection of your intellectual property, consider taking critical parts of your code and only exposing them as web services. Alternatively, consider tools like HASP that add a level of encryption and anti-debugging/reverse engineering protection to your product.

If neither of these is possible ... consider hiring some good lawyers.

Comments

1

Nothing is good enough to protect intellectual rights.. If someone really wants to reverse engineer your app, they can do it.

Your best bet is to put some copyright statements in your code. Obfuscating will help a bit though, as you'd have to put some effort into reverse engineering, meaning that most people wont take the time to do it.

Another step could be to JIT compile it.

If you're creating a public API, make sure you have some great xml-comments on the public methods, or even better, don't obfuscate the parameters there :)

Comments

1

It's easy enough for anyone determined to get your ip.

As far as "security" goes, security through obscurity is only slightly more secure than no security (which is actually more secure than bad security).

My rule has always been: Keep the Honest People Honest. Make sure you have your IP legally protected with patent applications, and have a lawyer draft up a competent Terms of Use/EULA. Use a decent obfuscator to prevent casual poking around, but realize it's not a one-shot-fix-all solution.

Unfortunately, if someone is determined to reverse engineer your code, they can do it, and they will do it.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.