我刚刚开始使用Dotfuscator,当我构建我的项目Dotfuscator 说:
Writing Assemblies...
Bad RVA found: 46
Build Error.
我在网上任何地方都找不到任何关于这个问题的提及。
我的项目分为几个部分,一个核心库项目和几个依赖于库项目的应用程序。我目前只是想混淆库项目。对于输入程序集,我刚刚将 Dotfuscator 指向库.dll在 bin/x86/Release 文件夹中。
我在这里做错了什么,还是我真的在 Dotfuscator 中遇到了一个以前未知的错误?
编辑:我刚刚注意到"仅调查"选项,我刚刚针对该项目运行了该选项,它似乎工作正常:
Build Finished.
Build Statistics Total Renamed Percent Renamed
Types: 271 63 23.25 %
Methods: 1609 672 41.77 %
Fields: 1099 852 77.53 %
Dotfuscator Community Edition cannot rename generic types or methods.
RVA 是程序集元数据的组件,代表"相对虚拟地址"。它是存储在程序集标头中的数字,指向程序集中的某个虚拟地址。 在 Dotfuscator 中,每个 RVA 在由给定子系统处理时都会被检查其有效性(但并非所有子系统都处理 RVA),如果出现以下情况,则此检查将失败
A) 在程序集元数据中找不到节标题,但找到了 RVA,或者
B) RVA 指向位于所有找到的节标题的最后一个虚拟地址之前的地址。
一般来说,这些事情都不应该发生。 检查是否存在可能更改库程序集的生成后行为。 您可能还想尝试运行 PEVerify,看看您的库是否正常。 未能通过 PEVerify 并不意味着代码无法运行,但它可能会干扰混淆(或程序集元数据的任何处理)。 如果PEVerify通过,你让我:) 也许可以手动检查元数据,以查看是否命中了上述条件 A 或 B。