1

我刚开始使用 Dotfuscator 并且从一开始就碰壁了,当我构建我的项目 Dotfuscator 时说:

Writing Assemblies...

Bad RVA found: 46
Build Error.

我在网上的任何地方都找不到关于这个问题的任何提及。

我的项目分为几个部分,一个核心库项目和几个依赖于库项目的应用程序。我现在只是想混淆图书馆项目。对于输入程序集,我刚刚将 Dotfuscator 指向 bin/x86/Release 文件夹中的 Library.dll。

我在这里做错了什么,还是我真的在 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.
4

1 回答 1

0

RVA 是程序集元数据的一个组件,代表“相对虚拟地址”。它是存储在程序集头中的一个数字,指向程序集中的某个虚拟地址。在 Dotfuscator 中,每个 RVA 在由给定子系统处理时都会检查其有效性(尽管并非所有子系统都处理 RVA),如果出现以下情况,此检查将失败

A) 在程序集元数据中未找到节标题,但找到 RVA,或

B) RVA 指向的地址位于所有找到的节头的最后一个虚拟地址之前。

一般来说,这些事情都不应该发生。检查是否存在可能改变库程序集的构建后行为。您可能还想尝试运行PEVerify以查看您的库是否正常签出。未能通过 PEVerify 并不意味着代码不会运行,但它可能会干扰混淆(或程序集元数据的任何处理)。如果 PEVerify 通过,你就知道了 :) 也许手动检查元数据,看看上面的条件 A 或 B 是否被击中。

于 2012-08-18T01:35:45.980 回答