HEXA BLOG

プログラム

HEXA BLOGプログラム2018.9.18

ILをデコンパイルしてみたい

こんにちは。最近c#の勉強を始めた大阪プログラマーの澤野です。
今回はILの簡単なデコンパイルを紹介します。
デコンパイルするならILSpyやSharpLabを使えばいいのでは?と思う方もいると思うのですが、
今回紹介するのはc#のリフレクション機能を使用してデコンパイルする方法です。
※今回はデコンパイルといってもILのバイトデータをソースコードに戻すのではなく
 バイトコードが何をやっているのか可視化するところまでを行います。

まずサンプルを書いたのでそれを見ていきます。

■コンパイルするソースコード
環境: c# .NET Standard 2.0

■デコンパイルを行うソースコード
環境: c# .NET Core 2.1
※ILSpyなどと違い完璧にデコンパイルできるコードではありません。
 あくまで今回のサンプルをデコンパイルするためのコードです。

デコンパイルした結果がこちらです。

結果が正しいか比較するためにSharpLabの結果も用意しました。

存外、簡単にデコンパイルできました!
SharpLabの結果と見比べてみるといろいろ足りない気がしなくもないですがOpCodeとOperandがいい感じに取得できているので良しとします。

c#はリフレクション機能が優秀なので短いコードで結果を得ることができます。
もし「ILを別の何かに変換したい」と考えているのでしたら、c#のリフレクション機能を使用してデコンパイルしてみてはいかがでしょうか。

参考書籍:
Extensive Xamarin ─ひろがるXamarinの世界─ Essential Xamarinシリーズ (技術書典シリーズ(NextPublishing))

RECRUIT

大阪・東京共にスタッフを募集しています。
特にキャリア採用のプログラマー・アーティストに興味がある方は下のボタンをクリックしてください

RECRUIT SITE