Skip to content

v3.1.41592-dont-rename-public

Latest
Compare
Choose a tag to compare

This is a special release of de4dot, which adds the following options:

--dont-rename-public    Do not rename public types, methods, fields, etc.

Leaving other options at default, only non-public types and members are renamed.
This means that the resulting assembly can still be used safely together with
other referencing assemblies, while obfuscated non-public names are still renamed.

-fpdb    Force PDB file generation for output

This generates the cleaned assembly with a debug symbol information file (.pdb),
thus setting the DEBUG DIRECTORY in the PE header of the assembly correctly.

The .pdb file itself is worthless because it doesn't relate to any source code,
but with the correct debug directory entry in the assembly header, tools like
DotPeek can generate a .pdb file for decompiled source. Otherwise, these tools
would not allow generating .pdb files and instead show this error:

Pdb has not been generated because assembly does not contain debug directory

-- See also: https://youtrack.jetbrains.com/issue/DOTP-6889

Technical Details

When you load a module into the process address space, the debugger uses two
pieces of information to find the matching PDB file. The first is obviously the
name of the file. If you load ZZZ.DLL, the debugger looks for ZZZ.PDB. The
extremely important part is how the debugger knows this is the exact matching
PDB file for this binary. That’s done through a GUID that’s embedded in both the
PDB file and the binary. If the GUID does not match, you certainly won’t debug
the module at the source code level.

-- Quote from: http://www.wintellect.com/devcenter/jrobbins/pdb-files-what-every-developer-must-know

Author of original modification: Ainz Ooal Gown