我尝试使用JetBrains dotPeek 1.4符号服务器但是我遇到了一些失败的第三方程序集,其dotPeek状态为:
Pdb has not been generated because assembly does not contain debug directory
使用CFF资源管理器我发现这些程序集有空的"调试目录"可移植可执行(PE)标头值。
是否有(简单)方法编辑PE以添加Debug Directory标头值?
答案 0 :(得分:4)
de4dot在dotPeek眼中创建了无效的.net可执行模块。然而,这是dotPeek的问题,而不是de4dot。但由于我们没有dotPeek的来源,我们应该修改de4dot而不是实现互操作性。 修改:de4dot.code / AssemblyModule.cs模块添加
writerOptions.WritePdb = true;
module.CreatePdbState();
到de4dot.code.AssemblyModule.Save函数,你在exe模块中填写了有效的pdb函数。
为了节省您的时间,您可以将de4dot项目与我的补丁一起使用:https://github.com/earnol/de4dot/commit/24c6e696fb9251f7d048ac33c88c710013a649d6 它会将调试目录添加到输出可执行文件中。只需删除生成的PDB并再次运行dotPeek。它将完美无瑕地运作。 使用类似:de4dot.exe -f filein.exe -o fileout.exe -fpdb