2

.NET Reflector を使用してアプリケーションを逆コンパイルし、いくつかの変更を加えて再度コンパイルしたいと考えています...ただし、コンパイルしようとすると、次のようなエラーが大量に発生します。

Error   14  'RaiseEvent' definition missing for event 'AsyncReturn'.
Error   55  End of statement expected.
Error   58  Type 'WksStatus' is not defined.
Error   88  Character is not valid.
Error   102 Maximum number of errors has been exceeded.

次のいずれかの方法はありますか?

  1. エラーがないように逆コンパイルするか、
  2. エラーがあってもコンパイルします。

助けてくれてありがとう!気軽に質問してください。

4

1 に答える 1

4

コードの逆コンパイルは正確な科学ではありません。逆コンパイラが MSIL コードをリバース エンジニアリングし、理解できる .net 言語に変換するために使用するアルゴリズムがいくつかあります。
さらに、.net 言語で記述した多くのコードが、さまざまなコードに前処理またはコンパイルされます。これらは「シンタックス シュガー」と呼ばれることもあります (この例には、「yield return」、「lock」、拡張メソッド、using などがあります)。

そこにはたくさんの逆コンパイラがあり、それらは完璧ではありません!
同じ dll/実行可能ファイルを 2 つの異なる逆コンパイラで開いてみることもできます。多くの場合、同じ MSIL の異なる解釈が表示されます。

見ているコードがオープン ソースの場合は、実際のコードを入手するようにしてください。そうでない場合は、ハッキング
するべきではなく、何らかのバグを報告するべきです! 上記のいずれでもない場合は、必要な小さな修正を自分で行い、コードを再コンパイルする必要がありますが、一部の逆コンパイラはコードでエラーを引き起こす可能性があり、そうしないことを保証します彼らの働き方のおかげで、以前とまったく同じように働くことができます。

于 2012-10-28T15:50:05.650 に答える