输入表(Import Table)

只有当PE文件被装入内存后, Windows的PE装载器才将相关DLL装入, 并将调用输入函数的指令和函数
实际所处的地址联系起来, 即动态链接。动态链接是通过PE文件的输入表(IT(import table)来完成的。


输入表的结构

可选映像头中(IMAGE_OPTIONAL_HEADER32)中有一项DataDirectory的第二个成员指向输入表。
输入表以一个IMAGE_IMPORT_DESCRIPTOR(IID)简称数组开始。   

IMAGE_IMPORT_DESCRIPTOR struct
     union {
        DWORD OriginalFirstThunk;               4Byte
     };
     TimeDateStamp         DWORD     ;04h           4Byte
     ForwarderChain        DWORD     ;08h           4Byte
     Name                  DWORD     ;0Ch;          4Byte
     FirstThunk            DWORD     ;10h;          4Byte
IMAGE_IMPORT_DESCRIPTOR ends

OriginalFirstThunk与FirstThunk非常类似, 它们指向两个本质上相同的数组IMAGE_THUNK_DATA,
这些数组有好几种叫法, 但最常见的名字是输入名称表(Import Name Table, INT)和输入地址表(
Import Address Table, IAT)。

输入地址表(IAT),    这个IAT有的时候因为脱壳会被损坏, 或者由于使用了特殊的压缩或生成的PE
文件, 导致没有IAT, 或者是被修改的IAT, 所以需要重建? 这只是我的猜测。


最常见的名字是 输入名称表(Import Name Table, INT) 和    输入地址表(Import Address Table IAT)
原来 INT    - IAT是本质上相同的数组(IMAGE_THUNK_DATA)。