コンパイル済みのアセンブリがあります。そのアセンブリ内のメソッドの 1 つのメソッド実装を、私が期待するものとプログラムで比較したいと考えています。
彼らの IL を比較する方法はありますか? 任意の命令セットのバイト配列表現を取得できたとしても、問題はありません。
助けていただければ幸いです。
コンパイル済みのアセンブリがあります。そのアセンブリ内のメソッドの 1 つのメソッド実装を、私が期待するものとプログラムで比較したいと考えています。
彼らの IL を比較する方法はありますか? 任意の命令セットのバイト配列表現を取得できたとしても、問題はありません。
助けていただければ幸いです。
Mono.Cecilを使用することから始めるのがよいでしょう。Cecil は、CLR アセンブリの読み取りと変更に使用されるライブラリであり、CIL バイトコードを取得する限り、すべてのファイル解析を行います。
使用できる可能性のある別の潜在的なライブラリはBoogieです
リフレクションを使用してみて、バイト配列を使用して IL を比較することができます。
このメソッドを見てみましょう: http://msdn.microsoft.com/en-us/library/system.reflection.methodbody.getilasbytearray.aspx
ildasm を使用してアセンブリをダンプし、次のように 2 つのバージョンを比較できます。
ildasm /ALL /TEXT assembly1.dll > dump1.txt
ildasm /ALL /TEXT assembly2.dll > dump2.txt
fc dump1.txt dump2.txt
Visual Studio コマンド プロンプトから ildasm.exe を使用して、ildasm.exe dll 名のようなことを行うことができます。