PE ファイルとしてみたアセンブリ [合致+2][異種+4]

PE ファイルの構成については詳しくない*1んだけども、.NET のアセンブリは PE ファイルとしてみると、

  • ヘッダ部のフラグ設定が異なる
  • スタートアップルーチンが少し特殊
  • .TEXT セクションがない(リソース DLL のように)
  • .CLR セクションが配置されている

といったところが代表的な違いだが、このような構造をもつ .NET アセンブリは、まるでクラシカル DLL であるかのように LoadLibrary 系の API によって読み込むこともできる。
上記をふまえて、

  • .NET アセンブリは .TEXT セクションを持つことができるか?
  • .NET アセンブリは exports を持つことができるか?
  • クラシカル DLL は、.CLR セクションを持つことができるか?
  • .NET アセンブリのスタートアップルーチンをクラシカル DLL から呼び出せるか?

という点について確認してみると、すべてが YES である。これは、とても面白い DLL ファイルが作成できることを意味していて、すでにそのような DLL の作成をサポートするツールも存在する。

後日へ続く

*1:なら書くなよ、と思わなくもないほど