3

ライブラリをConfuserExMissingMethodExceptionで難読化しようとしていますが、その後、難読化されたクラスの最初の使用を指すスタック トレースでアプリがクラッシュし、問題のメソッドは名前が変更されたものです。呼び出しやその他の使用法がどこで見つかったのかわからないため、何を確認すればよいかわかりません。私の推測では、JIT プロセス中に例外が発生しています。

名前の難読化のみが適用され、それを逆にするマップがあります。

難読化されたモジュールを調べたところ、メソッドの名前が変更されたバージョンが確実に存在します。

また、難読化されたモジュールで PEVerify.exe を実行すると、いくつかのエラーが発生します (以下に小さな抜粋のみを示します)。

[IL]: Error: [d:\1\Confused\my.dll : _YGbNngBKpRxvvy7NkSKSrcvDmJG_::_17w1GiROq6y1aWRw9wWSUGOde1C_][mdToken=0x60003cd] Method does not exist.
Method does not exist.
Method does not exist.
[IL]: Error: [d:\1\Confused\my.dll : _cdMM5QrQwL2ksRGa1UJRmJUkVTd_::.ctor][mdToken=0x60006c8][offset 0x00000002] Unable to resolve token.
[IL]: Error: [d:\1\Confused\my.dll : ClassXyz::_tGtv2dtaIMIA6LoHXu7DwMxfvlS_][mdToken=0x6000732] Method does not exist.
[IL]: Error: [d:\1\Confused\my.dll : ClassXyz::_tk0zK3VXciZeRsH2nVWBZ6jNVdE_][mdToken=0x6000733] Method does not exist.
[IL]: Error: [d:\1\Confused\my.dll : ClassXyz::_tGtv2dtaIMIA6LoHXu7DwMxfvlS_][mdToken=0x6000732] Method does not exist.
[IL]: Error: [d:\1\Confused\my.dll : ClassXyz::_tk0zK3VXciZeRsH2nVWBZ6jNVdE_][mdToken=0x6000733] Method does not exist.
[IL]: Error: [d:\1\Confused\my.dll : ClassXyz::_PkJlSB6sykBdsQ8OXX3CBVEXudk_][mdToken=0x6000735] Method does not exist.
[IL]: Error: [d:\1\Confused\my.dll : ClassXyz::_AYy29oWv1vnvKJP5Q1lcxUcQZRd_][mdToken=0x6000757] Method does not exist.

難読化プロセスをデバッグして何が問題なのかを検索する準備ができています...しかし、何を探すべきかわかりません。コードのどの部分が古いメソッド名を使用しようとしているかを調べるにはどうすればよいですか? PEVerify の出力を処理する方法、たとえば mdTokens はどのように役立つのでしょうか?

4

3 に答える 3