この記事はC#アドベントカレンダー2014の15日目の記事です。 C# Advent Calendar 2014 - Qiita デコンパイルとは 大雑把に言うと、コンパイルされたプログラム(exe, dllなど)から、元のコードを復元する行為のことです。 特にC#やJavaの様に中間言語に翻訳された状態でコンパイルされるような言語の場合は 元のコードにかなり忠実に復元されます。 本記事ではC#に限らず、.NETに関わる言語全般のデコンパイルをする方法を書いていきます。*1*2 中間言語(IL) C#(や、VB.NETなど)では、コンパイル時に直接ネイティブコードにするのではなく、 一旦中間言語(以下、IL)という形にし、実行時にネイティブコードを生成するJITコンパイル方式を採用しています。 事前コンパイルという手段も用意されていますが基本的にはILを出力します。 ところで、ネイティブコ