プログラム内部の動作をデバッグするなどの目的で活用される逆コンパイラ。.NET Reflectorの有料化で、オープンソースのILSpyが新登場。その利用方法を紹介。
この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
.NET開発では、プログラム内部の動作をデバッグするなどの目的で、逆コンパイラ(decompiler)が用いられることがよくある。逆コンパイラとは、.NETアセンブリ(=.EXEファイルや.DLLファイルなど)から、C#やVB(Visual Basic)などのソース・コードを生成できるツールのことである。
有名なツールに、.NET Reflectorがあり、これに機能を追加するアドインも豊富に提供されている(.NET Reflectorについては、「.NET Tools:.NET逆コンパイラとコードを難読化するDotfuscator」を参照してほしい)。.NET Reflector(標準版)は、長らく無償で提供されてきたが、2011年3月10日から35米ドルの有料となった(※執筆時点。なお、この有償化の理由は、これまで実施してきた無償版+有償版という組み合わせのビジネス・モデルの収益では開発を維持できないから、ということである)。
この流れに対応して、オープンソースによる無償の逆コンパイラ・ツール「ILSpy」の開発が開始された。そこで本TIPSでは、このILSpyの入手から利用までを紹介する。
※ILSpyのバージョンは、2011年4月7日時点で「1.0 M1(マイルストーン1)」、つまり、まだベータ版である。筆者が試す限りでは問題なく利用できているが、場合によってはエラーが発生したり、不安定な部分が存在したりする可能性があるので、実利用する際にはご留意いただきたい。また、ILSpyは残念ながら(執筆時点で)VBに対応していない。
* なお、逆コンパイルを行う場合は、対象ソフトウェアの使用許諾に従って自己責任で行ってほしい。
ILSpyは、無償の.NET開発ツール「SharpDevelop」の一部コンポーネントとしてSourceForge.netで配布されている。
上記のリンク先を開き、(SourceForge.netの場合、[1.0]というリンクをクリックして開き、次の表示されるページで)「xxx_Binaries.zip」(例:「ILSpy_1.0.0.417_M1_Binaries.zip」)というリンクをクリックすると、ダウンロードが開始される。ダウンロードされた.ZIPファイルを展開すると、次の画面のように表示されるので、ILSpy.exeファイルをダブルクリックするなどして実行すれば、ILSpyのGUI(Windowsアプリケーション)が起動する。
●ILSpyの画面構成
ILSpyでは、次の画面に示すように左側ペインに各アセンブリ(とその内容)がツリー形式で表示され、そこで選択しているアセンブリ項目(もしくは、その内容項目)の逆コンパイル結果が右側ペインに表示される。
●BCLアセンブリの追加
左側のアセンブリ・ツリーには、.NET Framework基本クラス・ライブラリ(BCL)の主なアセンブリ(「mscorlib」や「System」)がデフォルトで登録されている。
ここに登録されていないアセンブリを逆コンパイルしたい場合には、メニューバーから[File]−[Open from GAC]を選択する。これにより[Open From GAC]ダイアログ(次の画面を参照)が起動し、そこでGAC(グローバル・アセンブリ・キャッシュ)に存在するアセンブリの一覧が表示されるので、適切なアセンブリ項目を選択して[Open]ボタンをクリックする。
その結果、ILSpyの左側にあるアセンブリ・ツリーにアセンブリ項目(この例では「System.Web」)が追加される。
なお、[Open From GAC]ダイアログに表示されるアセンブリが多すぎて、目的のアセンブリを見つけにくいときには、[Search]テキストボックスにアセンブリ名の一部を入力して検索するとよい。
●自作アセンブリの追加
BCLのアセンブリではなく、任意のアセンブリ(厳密にはGACに存在しないアセンブリ)を追加したい場合は、メニューバーから[File]−[開く]を選択する(もしくはツールバー上にある[Open]ボタンをクリックする)。これにより[開く]ダイアログ(次の画面を参照)が表示されるので、適切なアセンブリ・ファイルを選択して[開く]ボタンをクリックする。
Copyright© Digital Advantage Corp. All Rights Reserved.