DotPeek PDB生成用于没有调试目录的程序集

Jas*_*rse 17 debugging portable-executable dotpeek

我正在尝试使用JetBrains dotPeek 1.4符号服务器但是我遇到了一些失败的第三方程序集,dotPeek状态为:

Pdb has not been generated because assembly does not contain debug directory
Run Code Online (Sandbox Code Playgroud)

使用CFF Explorer我发现这些程序集具有空的"调试目录"可移植可执行(PE)标头值.

是否有一种(简单)方法来编辑PE以添加Debug Directory标头值?

Ain*_*own 5

在dotPeek看来,de4dot创建了无效的.net可执行模块。这是dotPeek的问题,而不是de4dot。但是,由于我们没有dotPeek的资源,因此我们应该修改de4dot以获得互操作性。修改:de4dot.code / AssemblyModule.cs模块添加

writerOptions.WritePdb = true;
module.CreatePdbState();
Run Code Online (Sandbox Code Playgroud)

到de4dot.code.AssemblyModule.Save函数,您将在exe模块中填充具有有效的pdb函数。

为了节省您的时间,您可以在我的补丁程序中使用de4dot项目:https : //github.com/earnol/de4dot/commit/24c6e696fb9251f7d048ac33c88c710c013013a649d6 它将调试目录添加到输出可执行文件。只需删除生成的PDB并再次运行dotPeek。它将完美地工作。使用类似的东西:de4dot.exe -f filein.exe -o fileout.exe -fpdb