【发布时间】:2021-08-27 13:13:14
【问题描述】:
在反汇编 Portable Executables 时,我意识到导入部分通常包含像 __imp_GetPixel 这样的名称,而不是直接包含 GetPixel(GetPixel 只是一个示例)。有什么原因吗?他们仍然指的是相同的功能吗? idata 中的 extrn 关键字是否总是指代函数,还是也可以指代常量?
现在,在上图中,这些导入是函数非常简单。但有时不是很清楚(这就是为什么我问是否只导入函数):
【问题讨论】:
-
__imp_func 这是一个变量,它持有指向 func 的指针
-
在 PE 文件中,导入是一个函数指针表,将在加载时解析。代码跳转到该指针指向的位置。这是因为直到加载时才知道库在内存中的位置。
标签: winapi assembly x86 reverse-engineering disassembly