1

私は 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.
4

1 に答える 1

0

RVA は、アセンブリのメタデータのコンポーネントであり、「相対仮想アドレス」の略です。これは、アセンブリ ヘッダーに格納されている数値であり、アセンブリ内の仮想アドレスを指しています。Dotfuscator では、各 RVA は特定のサブシステムによって処理されるときに有効性がチェックされます (ただし、すべてのサブシステムが RVA を処理するわけではありません)。

A) アセンブリ メタデータにセクション ヘッダーが見つからなかったが、RVA が見つかった、または

B) RVA は、見つかったすべてのセクション ヘッダーの最後の仮想アドレスの前にあるアドレスを指します。

一般に、これらのことはどちらも起こらないはずです。ライブラリ アセンブリを変更した可能性のあるビルド後の動作があるかどうかを確認します。また、 PEVerifyを実行して、ライブラリが正常にチェックアウトされるかどうかを確認することもできます。PEVerify に合格しないからといって、コードが実行されないわけではありませんが、難読化 (またはアセンブリ メタデータの処理) に干渉する可能性があります。PEVerify がパスした場合、あなたは私を手に入れました :) おそらくメタデータを手動で調べて、上記の条件 A または B のいずれかに該当するかどうかを確認します。

于 2012-08-18T01:35:45.980 に答える