.NETは実行ファイルの生成によって、コンパイル済みの中間コードを生成する。それを.NETフレームワークによって実行する。

3Dsearch4 Thumbnail-5

中間コードというのがくせ者だ。OSの壁を越えて、様々な環境下でも実行できるメリットはあるものの、コードが中途半端に読めてしまう。そう、デコンパイルが容易なのだ。

今回紹介するフリーウェアはReflector for .NET、.NET向けの逆コンパイラーだ。

Reflector for .NETを起動し、.NETアプリケーションを指定してみよう。ツリーの中に登録されたアプリケーションを順々にたどっていくと、無事ソースコードが見られるはずだ。日本語も表示できる。

3Dsearch6 Thumbnail-5

これはソースをそのまま表示している訳ではない。中間コードから再現しているようで、恐らくコメントはなくなっていると思し、括弧の数等は異なっている。だが同じように動作するコードが再現される。

これは中間コードを生成する言語の宿命とも言える問題のようだ。だが、これでは安易にパスワードを書いたりできない。難読化ツールもあるようだが、それでも解読される可能性は残るだろう。

3Dsearch1 Thumbnail-10

逆に考えれば、誰かが作ったアプリケーションを参考にしたり、ソースを紛失してしまったアプリケーションでも再現できるメリットがある。さらにC#で書いたものをVB.NETやDelphiとしてソースを見ることができる。怖さもあるが、メリットもまた大きいソフトウェアだ。

Lutz Roeder’s Programming.NET C# VB CLR
 http://www.aisto.com/roeder/dotnet/