如果我使用 Eazfuscator 混淆 vb.net 程序集并启用符号名称加密(以便我可以使用 Eazfuscator 堆栈跟踪解码器),如果我发送 PDB 文件,这是否有效地撤消?我想发送 PDB 文件,以便在堆栈跟踪中获取行号,这些行号会在错误报告中发送回给我。
我知道我可以通过保留已发布版本的 PDB 文件来获取行号,但这是我现在不需要的额外复杂层,我将在未来实现它。我只是想确保我没有通过包含 PDB 文件来有效地传送非混淆代码。
提前感谢您的任何建议。
如果我使用 Eazfuscator 混淆 vb.net 程序集并启用符号名称加密(以便我可以使用 Eazfuscator 堆栈跟踪解码器),如果我发送 PDB 文件,这是否有效地撤消?我想发送 PDB 文件,以便在堆栈跟踪中获取行号,这些行号会在错误报告中发送回给我。
我知道我可以通过保留已发布版本的 PDB 文件来获取行号,但这是我现在不需要的额外复杂层,我将在未来实现它。我只是想确保我没有通过包含 PDB 文件来有效地传送非混淆代码。
提前感谢您的任何建议。
不,传送 PDB 文件不会使混淆变得无用。但是请注意,PDB 文件可以包含局部变量的名称,因此这是反射器等反汇编程序可以使用的另一条信息。PDB 文件还可以包含源代码文件的完整路径,但是,这在泄露敏感信息方面几乎没有任何危害。
一些混淆器(如Crypto Obfuscator)支持 PDB 文件生成 - 混淆后,它会输出与混淆程序集同步的新 PDB 文件,以便您的堆栈跟踪保持正确。此外,PDB 文件包含上述源代码文件的混淆名称。它还会从 PDB 文件中删除所有局部变量名称。
免责声明:我为 Crypto Obfuscator 的开发商 LogicNP Software 工作。
PDB 不包含实际代码。但我有一种强烈的感觉,混淆后的 PDB 将与二进制不兼容。这是位于 PDB 内部的内容:
据我了解,混淆会破坏非公共类型、方法、参数等。因此,如果它不改变原始 IL 偏移量,显示行号可能会起作用,但它会提供一些实际上被混淆的信息,问题是它是否可以恢复。
如果您非常关心反混淆,我建议添加丰富的日志记录。