C# Tips
−ildasmを使え!−


[トップ] [目次]

C#コンパイラはネイティブコンパイラじゃない

C#にしろ、VB.NETにしろコンパイルするとexeやdllができますが、中身はx86ネイティブではありません。 .NETでは中間言語(Intermediate Language、まぁ、仮想のCPUの仮想のマシン語、および、アセンブラと思ってもらえばいいです。以下ILと略)が決められています。 exeやdllの中にはこれが格納されています。
あと、重要なものとしてメタデータというのもあります。クラスやメソッド、プロパティなどの情報です。 COMのタイプライブラリの発展形と思ってもらえばいいです。 これのおかげでリフレクション(実行時にメソッドの引数や戻り値などの情報を取り出す)や属性を取り出すといったことができるわけです。 C++でいうヘッダファイルがなくてもコンパイルできるのもこれのおかげですね。

これらの内部形式はECMAに提出されてECMA-335として公開されてますので誰でも見ることができます (MicrosoftのECMA C# and Common Language Infrastructure StandardsにはWord形式のファイルもあるようです)。


ildasmを使え

.NET Framework SDKに付いてるildasmを使えば、exeやdllの中に格納されているメタデータやILを見ることができます。 たいてい、リファレンスにはprivateなクラスやメソッドについては書かれてませんが、メタデータにはこれらの情報も含まれています。 なので、ildasmを使えばこれらの情報も見ることができます。
もちろん、リファレンスがない場合やtlbimp、aximpなどで自動生成されたdllの内容を確認する際にもとても役に立ちます。

ildasmは、.NETでプログラミングするときの必須のツールと言えると思います (ただ、リバースエンジニアリングが禁止されていたりする場合は、それに引っかからないか注意する必要があると思いますが。 でも、標準で付いているツールで普通に見れるものを見ることがリバースエンジニアリングにあたると言えるのかどうかはわかりませんけど)。


[トップ] [目次]

株式会社ディーバ 青柳 臣一
2002/04/13