我尝试在win64上读取pe中kernel32.dll导入的函数。似乎零填充的IMAGE_THUNK_DATA是IMAGE_THUNK_DATA数组的结尾。但是我发现在kernel32.dll的IMAGE_THUNK_DATA数组中,第二个IMAGE_THUNK_DATA是0填充的。这意味着kernel32只有一个导入的函数?或者如何获得IMAGE_THUNK_DATA数组的大小?
答案 0 :(得分:1)
An In-Depth Look into the Win32 Portable Executable File Format, Part 2:
每个IMAGE_IMPORT_DESCRIPTOR通常指向两个 相同的数组。这些数组已被多个名称调用,但是 两个最常见的名称是导入地址表(IAT)和 导入名称表(INT)。
...
两个数组都有IMAGE_THUNK_DATA类型的元素,它是一个 指针大小的联合。每个IMAGE_THUNK_DATA元素对应一个 从可执行文件导入的函数。两个数组的末端都是 由IMAGE_THUNK_DATA元素指示,值为零。