This documentation is archived and is not being maintained.

Debugging Obfuscated Code 

Visual Studio 2005

One major drawback of obfuscation is that the task of maintaining and troubleshooting an obfuscated application becomes more difficult. In a well obfuscated application, the names of all types, methods, and fields are changed from their carefully thought out, informative names into meaningless, semi-random names.

This impacts the usefulness of bug reports sent in from the field in the form of stack traces. A stack trace is essentially a listing of where in the program a problem occurred. The list includes the names embedded in the program (e.g. method and type names). A stack trace from an obfuscated program will contain the obfuscated names, and will thus be very difficult to read by support personnel and developers.

Dotfuscator Standard and Professional Editions address this challenge by providing a tool that automatically decodes obfuscated stack traces using the renaming map file. Given an obfuscated stack trace, the tool replaces the obfuscated names with the original names and displays the results. The tool is built into Dotfuscator Standard and Professional Editions. PreEmptive also offers this same function in a standalone tool called Lucidator, which can be licensed by group.

Even in-house debugging of obfuscated applications need not be as complex as it once was. Dotfuscator Standard and Professional Editions have the ability to output debugging symbol files for obfuscated applications (in Microsoft's PDB format) that correspond as closely as possible to the original symbol files output by the compiler. Using these files, developers can use a debugger to step through an obfuscated assembly and see the original source code.