9

如果我使用 Eazfuscator 混淆 vb.net 程序集并启用符号名称加密(以便我可以使用 Eazfuscator 堆栈跟踪解码器),如果我发送 PDB 文件,这是否有效地撤消?我想发送 PDB 文件,以便在堆栈跟踪中获取行号,这些行号会在错误报告中发送回给我。

我知道我可以通过保留已发布版本的 PDB 文件来获取行号,但这是我现在不需要的额外复杂层,我将在未来实现它。我只是想确保我没有通过包含 PDB 文件来有效地传送非混淆代码。

提前感谢您的任何建议。

4

2 回答 2

4

不,传送 PDB 文件不会使混淆变得无用。但是请注意,PDB 文件可以包含局部变量的名称,因此这是反射器等反汇编程序可以使用的另一条信息。PDB 文件还可以包含源代码文件的完整路径,但是,这在泄露敏感信息方面几乎没有任何危害。

一些混淆器(如Crypto Obfuscator)支持 PDB 文件生成 - 混淆后,它会输出与混淆程序集同步的新 PDB 文件,以便您的堆栈跟踪保持正确。此外,PDB 文件包含上述源代码文件的混淆名称。它还会从 PDB 文件中删除所有局部变量名称。

免责声明:我为 Crypto Obfuscator 的开发商 LogicNP Software 工作。

于 2012-05-01T10:06:19.373 回答
4

PDB 不包含实际代码。但我有一种强烈的感觉,混淆后的 PDB 将与二进制不兼容。这是位于 PDB 内部的内容

  • 公共、私有和静态函数地址
  • 全局变量名称和地址
  • 参数和局部变量的名称和偏移量在堆栈中的位置
  • 类型数据由类、结构和数据定义组成
  • Frame Pointer Omission (FPO) 数据,这是 x86 上原生堆栈行走的关键
  • 源文件名及其行

据我了解,混淆会破坏非公共类型、方法、参数等。因此,如果它不改变原始 IL 偏移量,显示行号可能会起作用,但它会提供一些实际上被混淆的信息,问题是它是否可以恢复。

如果您非常关心反混淆,我建议添加丰富的日志记录。

于 2011-08-30T13:18:32.213 回答