如果你想玩Portable Executables,就无法获取规范的副本.
已经有一段时间了,但万一内存正确地为我服务:IT和IAT是相同的,除了在解析导入时由PE-loader填充IAT - 但是不要相信我的话,检查规格:)
有一个快速浏览规范,并刷新我的记忆:导入表是主结构,每个DLL导入一个条目.每个条目包含,除其他事项外,在导入查找表(ILT)和导入地址表(IAT)指针(IIRC这些以前被称为OriginalFirstThunk和FirstThunk).ILT和IAT表在磁盘上是相同的,但在运行期间,IAT将填充导入函数的内存地址.
如果您希望能够处理非标准EXE,那么PE头IAT字段可能不能依赖于100%,就像您不能依赖于代码和数据指针的起始/大小一样.最好忽略IAT头字段并解析IT.此外,在解析IT时,ILT将在某些可执行文件中丢失,只有IAT - 较旧的borland(iirc)链接器因不生成ILT而臭名昭着.
IMAGE_IMPORT_DESCRIPTOR.IMAGE_THUNK_DATA.