揰掵佲 发表于 2025-5-17 13:41:39

火山视窗类_IATHOOK源码分享

IAT (Import Address Table) HOOK 是一种在 Windows 程序中进行函数钩子的技术。它通过修改程序的导入地址表来实现对目标函数的替换或拦截。

在 Windows 运行时,程序需要调用其他模块(DLL)中的函数来完成特定的功能。为了实现这一点,程序会在导入地址表中存储这些函数的地址。IAT 是一个数据结构,存储了程序所依赖的外部模块的函数地址。

IAT HOOK 的基本原理是通过修改导入地址表中的函数地址,将原始函数地址替换为自定义的函数地址。这样,在程序调用原始函数时,实际上会执行被替换的自定义函数,从而实现对目标函数的拦截和修改。







下面是类的源码回复可见

**** Hidden Message *****


调用的源码 建立一个成员变量

<火山程序 类型 = "通常" 版本 = 1 />

变量 MsgBox <类型 = 类_IATHOOK>
MsgBox.开始HOOK ("USER32.DLL", "MessageBoxW", 取静态方法地址 (_MyMsgBoxW))<火山程序 类型 = "通常" 版本 = 1 />

方法 _MyMsgBoxW <静态 类型 = 整数 注释 = "信息框HOOK" 折叠>
参数 所有者窗口的句柄 <类型 = 变整数>
参数 显示的消息 <类型 = 变整数>
参数 对话框标题 <类型 = 变整数>
参数 按钮 <类型 = 整数>
{
    调试输出 (所有者窗口的句柄, 显示的消息, 指针到文本 (显示的消息), 对话框标题, 指针到文本 (对话框标题), 按钮)
    // 进入我们回调之后 我们就可以为所欲为了

    返回 (取程序 ().主窗口对象.MsgBox.调用原函数 (取程序 ().主窗口对象.MsgBox.取原函数地址 (), 整数, 所有者窗口的句柄, 取文本指针 ("我已经HOOK了原来的信息框"), 取文本指针 ("我是标题"), 0))


}




Reillo 发表于 2025-5-17 13:42:56

66666666666666666

小虾米 发表于 2025-5-17 14:56:39

感谢大佬分享!

nbxcirhc 发表于 2025-5-18 09:05:57


感谢分享,很给力!~

ixyquqru 发表于 2025-5-18 13:41:22

感谢分享

hjf571x 发表于 2025-5-19 08:55:40

谢谢 分享,棒棒棒!!!

batcd 发表于 2025-5-19 09:22:51

谢谢分享,易语言的没学会看看火山的可以学会不

wq297528971 发表于 2025-5-23 15:29:55


开源精神必须支持~

一身旧雪 发表于 2025-5-30 16:17:55

感谢楼主的分享

Mines 发表于 2025-6-12 22:30:23

感谢分享!
页: [1] 2
查看完整版本: 火山视窗类_IATHOOK源码分享