已绑定手机签到天数: 273 天 [LV.8]以坛为家I
|
据统计90%查看本帖的人,都已经注册本站了哦
您需要 登录 才可以下载或查看,没有账号?立即注册
x
IAT (Import Address Table) HOOK 是一种在 Windows 程序中进行函数钩子的技术。它通过修改程序的导入地址表来实现对目标函数的替换或拦截。
在 Windows 运行时,程序需要调用其他模块(DLL)中的函数来完成特定的功能。为了实现这一点,程序会在导入地址表中存储这些函数的地址。IAT 是一个数据结构,存储了程序所依赖的外部模块的函数地址。
IAT HOOK 的基本原理是通过修改导入地址表中的函数地址,将原始函数地址替换为自定义的函数地址。这样,在程序调用原始函数时,实际上会执行被替换的自定义函数,从而实现对目标函数的拦截和修改。
下面是类的源码 回复可见
调用的源码 建立一个成员变量
- <火山程序 类型 = "通常" 版本 = 1 />
- 变量 MsgBox <类型 = 类_IATHOOK>
复制代码- MsgBox.开始HOOK ("USER32.DLL", "MessageBoxW", 取静态方法地址 (_MyMsgBoxW))
复制代码- <火山程序 类型 = "通常" 版本 = 1 />
- 方法 _MyMsgBoxW <静态 类型 = 整数 注释 = "信息框HOOK" 折叠>
- 参数 所有者窗口的句柄 <类型 = 变整数>
- 参数 显示的消息 <类型 = 变整数>
- 参数 对话框标题 <类型 = 变整数>
- 参数 按钮 <类型 = 整数>
- {
- 调试输出 (所有者窗口的句柄, 显示的消息, 指针到文本 (显示的消息), 对话框标题, 指针到文本 (对话框标题), 按钮)
- // 进入我们回调之后 我们就可以为所欲为了
- 返回 (取程序 ().主窗口对象.MsgBox.调用原函数 (取程序 ().主窗口对象.MsgBox.取原函数地址 (), 整数, 所有者窗口的句柄, 取文本指针 ("我已经HOOK了原来的信息框"), 取文本指针 ("我是标题"), 0))
- }
复制代码
|
|