Add Ons - DevSource
DevSource: Microsoft Developer Resource DevSource Home Sponsored by Microsoft Home Add Ons Architecture Languages Techniques Using VS Forums
Home arrow Add Ons arrow Page 3 - Review: Eschew Obfuscation? Maybe You Shouldn't.
Review: Eschew Obfuscation? Maybe You Shouldn't.
By Paul Kimmel

Rate This Article: Add This Article To:

Review: Eschew Obfuscation? Maybe You Shouldn't. - ' Moving Up To Pro '
( Page 3 of 4 )

Moving Up To Pro

Dotfuscator Professional includes these additional features:

  • Runs independently of VS.NET
  • Employs various renaming schemes
  • Portable debug-file support
  • Prefix renaming
  • Support for managed code
  • Stack trace translation
  • Report files in XML and HTML
  • Code compacting and removal of unused code (sometimes called pruning)
  • Support for Compact .NET
  • Flow logic obfuscation
  • Overloading induction
  • Incremental obfuscation
  • Seamless satellite assembly obfuscation
  • String encryption
  • Breaks ILDASM and tools like Reflector
ADVERTISEMENT

It is the last few features—obfuscation of flow logic, overloading induction, string encryption, and the capability of breaking decompilers—that make Dotfuscator Professional the serious obfuscator's tool.

What are these? Flow logic obfuscation changes if, for, and while constructs, yielding non-deterministic results when code is decompiled. The result is that the code still executes as before, but decompilers cannot reproduce the original code.

Overloaded induction results in up to 15% more redundancy in replacing your real names with gibberish names. Combining this option with the unprintable naming scheme makes it very difficult to differentiate names in the IL.

String encryption scrambles the text in your application. For example, imagine that a cracker was decompiling your code, looking for authentication text. This feature makes it difficult to find text related to authentication (with the intention of bypassing the associated logic). End result? It's a lot harder for a cracker to avoid your application's registration and authentication.

Dotfuscator uses known ways to break ILDASM. If someone tries to view the code you obfuscated with Dotfuscator Pro, ILDASM will crash. That may be the first time you're glad a progam blew up!

Collectively, employing maximal obfuscation has a dramatic effect on ILDASM and Reflector's ability to disassemble and decompile .NET assemblies. Figure 5 shows the ILDASM view of our Hello, World sample obfuscated with Dotfuscator Professional. If you click on the section prefixed with _Deleted, ILDASM crashes.

Figure 5: ildasm.exe's view after obfuscation.

Figure 6 shows the same code in Reflector. Notice the ominous message received when attempting to decompile the main method. (We only know it is the main method because the sample program only has one method that takes an array of strings, the Main method.)

Figure 6: Hello, World in Reflector after maximal obfuscation.

A new assembly was used to demonstrate maximal obfuscation. The reason is that Reflector caches assemblies; instead of opening the obfuscated assembly and showing the actual IL, Reflector was showing cached, unobfuscated IL. Using a new assembly forced Reflector to use a non-cached version of the code. Clearly, third parties should never have an unobfuscated version of the code, so this won't present an actual problem in practice.



 
 
>>> More Add Ons Articles          >>> More By Paul Kimmel
 



HD VOIP Has Arrived (with Tony Konstner)

Play Video >

All Videos >

Google and blonde jokes?

Read now >

Favorite books!

Read now >

View Now
DevSource RSS FEEDS
XML Want an easy way to keep up with breaking tech news? And the Get DevSource headlines delivered to your desktop with RSS.