以前PE勉強会を開催したとき、.idataの構造をうまく説明できませんでした。最近また説明する機会があったので、改めて図を描いてみました。バイナリと並べて構造をフラットに描きました。
この描き方は、Excel VBAで作成したコンパイラで使っていたものです。構造とバイナリの両方が確認できるので、これが一番分かりやすいかもしれません。
【追記】ILTなしでも起動することが分かったので、図解しました。
使い方
ILTとIATの中身は同じですが、EXE起動時にWindowsがIATを書き換えるので、値を取って来ればDLLの関数を呼ぶことができます。
ImageBaseが0x00400000の場合
call [0x00402054] # call foo call [0x00402058] # call bar call [0x00402060] # call hoge call [0x00402064] # call fuga
IATの中の書き換えられる部分をサンクと呼びます。