Debugging Obsfuscated Code

.NET obfuscator and automated error reporting

Moderators: Luke Jefferson, melvyn.harbour, dom.smith

Debugging Obsfuscated Code

Postby JohnRedGater » Mon Jul 18, 2011 12:17 pm

Apparently there is a way of debugging obfuscated code using the generated PDB file and VS 2010, but I can't seem to find out how to do this. Is there any documentation on how to do this? If not, what are the steps to do this. I'm getting errors that only occur after the code has been obsfuscated.
JohnRedGater
 
Posts: 10
Joined: Mon Jun 27, 2011 7:53 pm

Postby Brian Donahue » Tue Jul 19, 2011 1:42 pm

Hi John,

It's pretty easy - just use the "generate debugging information" option when you build in SmartAssembly. That will make a PDB that contains information relevant to the source code before the assembly was processed with SA. Once you have the PDB, you can attach Visual Studio or your debugger of choice to the process when you run it, set breakpoints, and do the normal things you usually do to troubleshoot regular debug builds.
Brian Donahue
 
Posts: 6668
Joined: Mon Aug 23, 2004 10:48 am

Postby JohnRedGater » Tue Jul 19, 2011 4:39 pm

Thanks for the information. I'll try it. If I integrate the obfuscation project in the release mode of my build in VS 2010, I should be able to debug it, correct?
JohnRedGater
 
Posts: 10
Joined: Mon Jun 27, 2011 7:53 pm

Postby Brian Donahue » Tue Jul 19, 2011 4:54 pm

Yes, as long as you generate debugging information, you can debug any SA-protected assembly, provided you copy the PDB that SA produced with the output.
Brian Donahue
 
Posts: 6668
Joined: Mon Aug 23, 2004 10:48 am

Postby JohnRedGater » Thu Jul 21, 2011 5:36 am

I modified my VS2010 project file to perform the obfuscation which replaces the .exe and the PDB.

I am able to start in debugging mode, but I can't watch any of the variables. It displays "The name 'xxxx' does not exist in the current context.

Also, the debugging behavior is strange. I can't step into a line of code and stepping over a line sometimes brings up a source not available. Is there something I may be doing wrong.

I made sure not to obfuscate source code URLs in the resulting PDB file.
Here's the relevant modifications to my Visual Studio 2010 project file:

<UsingTask TaskName="SmartAssembly.MSBuild.Tasks.Build" AssemblyName=" SmartAssembly.MSBuild.Tasks, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7f465a1c156d4d57" />
<Target Name="AfterBuild" Condition=" '$(Configuration)' == 'Release' ">
<SmartAssembly.MSBuild.Tasks.Build ProjectFile="Tester.saproj" output="$(OutDir)$(TargetName)$(TargetExt)"/>
</Target>
JohnRedGater
 
Posts: 10
Joined: Mon Jun 27, 2011 7:53 pm

Postby Brian Donahue » Thu Jul 21, 2011 1:59 pm

Admittedly, there are some problems with the PDB generated by SmartAssembly. No workarounds at this point.
Brian Donahue
 
Posts: 6668
Joined: Mon Aug 23, 2004 10:48 am


Return to SmartAssembly 6

Who is online

Users browsing this forum: No registered users and 0 guests