传送PDB文件会使混淆在.net中变得无用吗?

传送PDB文件会使混淆在.net中变得无用吗?,.net,obfuscation,pdb-files,eazfuscator,.net,Obfuscation,Pdb Files,Eazfuscator,如果我在启用符号名称加密的情况下使用eazfouscator对vb.net程序集进行模糊处理(以便我可以使用eazfouscator堆栈跟踪解码器),那么如果我发送PDB文件,这是否会有效地撤消?我想发送PDB文件,以便在堆栈跟踪中获得行号,并在错误报告中发送回我 我知道我可以通过保留已发布版本的PDB文件来获得行号,但这是一个额外的复杂性层,我现在不需要,我将在将来实现它。我只是想确保我没有通过包含PDB文件来有效地传递非模糊代码 提前感谢您的建议。PDB不包含实际代码。但我有一种强烈的感觉,

如果我在启用符号名称加密的情况下使用eazfouscator对vb.net程序集进行模糊处理(以便我可以使用eazfouscator堆栈跟踪解码器),那么如果我发送PDB文件,这是否会有效地撤消?我想发送PDB文件,以便在堆栈跟踪中获得行号,并在错误报告中发送回我

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


提前感谢您的建议。

PDB不包含实际代码。但我有一种强烈的感觉,在混淆之后,PDB将与二进制不兼容

  • 公用、专用和静态函数地址
  • 全局变量名 及地址
  • 参数和局部变量名称和偏移量,其中 在堆栈上找到它们
  • 类型数据包括类、结构、, 和数据定义
  • 帧指针省略(FPO)数据,即 x86上本机堆栈遍历的关键
  • 源文件名及其行
据我所知,模糊处理会破坏非公共类型、方法、参数等。所以,如果它不改变原始IL偏移量,显示行号可能会起作用,但它会提供一些实际模糊处理的信息,问题是它是否可恢复


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

不,发送PDB文件不会使混淆变得无用。但是请注意,PDB文件可以包含局部变量的名称,因此这是类似Reflector的反汇编程序可以使用的另一条信息。PDB文件也可以包含源代码文件的完整路径,但这在泄露敏感信息方面很少造成任何伤害

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


免责声明:我为LogicNP软件工作,该软件是加密模糊器的开发人员。

行号在发布版本中通常不有用,抖动优化器会重新排序代码行。嗯……很有趣……我没听说过这个。我将尝试一下,看看我是否得到了错误的行号。谢谢,汉斯,你说得对。快速测试表明,第1003行出现的错误报告为第1000行出现。Andrey-谢谢。我认为EAZfouscator的堆栈跟踪解码器会处理好这些事情,然后我认为我最好对它进行测试。果然,解码的堆栈跟踪中没有行号,而非模糊版本中有行号。在我看来(现在我知道了),PDB在需要它的时候,即当堆栈跟踪被写入时,没有任何用处,这似乎是合乎逻辑的,因为在这一点上,模糊代码和PDB符号名称不匹配。然而,考虑到行号的不精确性,我现在不太确定它们的价值。