Debugging Obsfuscated Code

JohnRedGaterJohnRedGater Posts: 17
edited July 21, 2011 8:59AM in SmartAssembly
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.

Comments

  • Brian DonahueBrian Donahue Posts: 6,590 Bronze 1
    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.
  • 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?
  • Brian DonahueBrian Donahue Posts: 6,590 Bronze 1
    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.
  • 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>
  • Brian DonahueBrian Donahue Posts: 6,590 Bronze 1
    Admittedly, there are some problems with the PDB generated by SmartAssembly. No workarounds at this point.
Sign In or Register to comment.