PE .idata部分

根据我读过的文档,Windows可执行文件的导入目录通常放在一个名为.idata的部分。 (我知道这些名称实际上只是注释,但是“通常…被称为”大概意味着Microsoft工具链将默认使用该名称。)

当我编译和链接一个简单的Ctesting程序与微软编译器,然后dumpbin的结果,没有一节称为.idata 。 然而,在可选的标题中有一个肯定的RVA和导入目录的大小,所以导入表就在那里。

现在的导入目录是放在一个名称不同的部分,还是我错过了一些东西?

事实上,在我刚刚构建的可执行文件中,没有.idata部分。

使用PE Explorer,我们可以看到导入表和IAT作为.rdata部分的一部分存储。 (请注意“指向目录”一栏):

在这里输入图像说明

在这里输入图像说明

在Data Directories页面上,我们看到Import Table的虚拟地址是0x403354 。 这在.rdata节( 0x403000 - 0x403C00 )范围内。


有趣的是(也有些令人沮丧的),IDA的PE加载程序综合地“创建”了一个.idata节,它实际上并不存在于文件中:

在这里输入图像说明