跳转至

IAT 钩子

IAT 钩子实际替换一种特定类型 VF 表(称为导入地址表(IAT))中的函数地址。进程中的每个已加载模块在其 PE 头中都包含一个 IAT。模块的 IAT 保存模块依赖的所有其他模块列表,以及模块从每个依赖中使用的函数列表。把 IAT 想象成 API 相互调用的查找表。

模块加载时,它的依赖也会被加载。依赖加载是一个递归过程,一直持续到所有模块的所有依赖都加载完毕。每个依赖加载时,操作系统找到依赖模块使用的所有函数,并用函数地址填充其 IAT 中的空白。然后,模块从依赖调用函数时,通过从 IAT 解析函数地址来进行调用。