Dotfuscator Bad RVA

时间:2012-05-26 17:01:50

标签: c# debugging dotfuscator

我刚刚开始使用Dotfuscator,我从一开始就碰到了一堵砖墙,当我建造我的项目Dotfuscator时说:

Writing Assemblies...

Bad RVA found: 46
Build Error.

我在网上任何地方都找不到这个问题。

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

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

1 个答案:

答案 0 :(得分:0)

RVA是程序集元数据的一个组成部分,代表“相对虚拟地址”。它是存储在程序集标题中的数字,指向程序集中的某个虚拟地址。在Dotfuscator中,检查每个RVA的有效性,因为它由给定的子系统处理(但并非所有子系统都处理RVA),如果

,则此检查将失败。

A)在程序集元数据中找不到部分标题但找不到RVAs,或

B)RVA指向一个地址,该地址落在所有找到的部分标题的最后一个虚拟地址之前。

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