HOOK API 技术谁能给个实例
本帖最后由 メ㊣逆ご帅☆ 于 2014-7-12 14:29 编辑
代码给你
由于MessageBox是user32.dll的函数。模块地址一般情况下不变。所以直接获取自己进程的MessageBoxA地址作为目标进程的地址
。代码写的比较挫。参考下未点击前
点击后
至于你要的看目标是否调用指定API的。那个你自己在接管函数搞个计数器就行
本帖最后由 メ㊣逆ご帅☆ 于 2014-7-11 20:47 编辑
首先从OD的手动HOOK开始。程序自动HOOK如果需要的话可以告诉我(练手用的附件在下面)
这是我以前fishc不知道给谁下载的win32asm记事本程序。可以看到点击帮助的时候会有MessageBox的调用
OD载入该程序
暂时不清楚是调用ASCII版的MessageBoxA还是Unicode的MessageBoxW
所以先尝试F2下断A版的
再次点击帮助按钮
断下了
OK,确定是这里了
。开始hook。(HOOK有好几种手法。比如IATHOOK是改IAT表的数据。INLINE HOOK是直接改机器码,还有虚表HOOK等这里自行了解)
这里采用最常用简单的方式INLINE HOOK(其实其他几种方法也不复杂只要你有概念就行)
HOOK前先考虑要怎么HOOK
看看MeessageBox的参数情况,如图
这里可以看到ESP+C处的标题参数为NULL,这里把他HOOK改成了和Text一样好了
首先决定HOOK位置
INLINE HOOK在长跳转的情况下需要5个字节。短跳转需要2个字节(汇编的知识)
这里需要找一个数据全为0的空白地址(也可以自己申请空白地址)
MessageBox 77D507E和00401a00相差73D367E
这不是1个字节能装下的位移。所以需要5个字节来HOOK
这里选择开头的5个字节来HOOK
OD改写指令jmp 00401a00
可以看到前三条指令被覆盖了
现在来到00401a00处
首先确定目的是
改写esp+c处的参数
00401A00 8B4424 08 mov eax,dword ptr ss://取出Text参数
00401A04 894424 0C mov dword ptr ss:,eax//覆盖esp+c的title参数
00401A08 8BFF mov edi,edi//重新模拟一遍被覆盖的指令
00401A0A 55 push ebp//重新模拟一遍被覆盖的指令
00401A0B 8BEC mov ebp,esp//重新模拟一遍被覆盖的指令
00401A0D - E9 DDED9477 jmp user32.77D507EF//跳回去继续执行
这里选择利用EAX寄存器来传输内容。因为EAX寄存器这里内容被破坏是无所谓的
如果利用了其他寄存器的值。要记得还原寄存器的内容。避免出现崩溃等情况。具体要自己调试
这样就HOOK完了
运行起来试试看
可以看到标题不是“错误”了
这里有小甲鱼转载的一个关于HOOK的一段话你可以看一下:
http://bbs.fishc.com/forum.php?m ... p;page=1#pid1290919 表示看不懂,求教该学哪些内容? メ㊣逆ご帅☆ 发表于 2014-7-11 20:45
首先从OD的手动HOOK开始。程序自动HOOK如果需要的话可以告诉我(练手用的附件在下面)
这是我以前fishc不 ...
其實 這個我知道
我想用VC 代碼 实现
比如當我指定某個进程他在調用 MessageBox API 时 我要知道他触发了该函数的调用 青玄 发表于 2014-7-11 22:11
哎!还是给你发上来吧!
论坛里有关于HOOK API的贴子, 但其实现在方式显示得麻烦, 其实现在拦截API一 ...
版主 有VC 实现的方法吗??? メ㊣逆ご帅☆ 发表于 2014-7-12 14:27
代码给你
由于MessageBox是user32.dll的函数。模块地址一般情况下不变。所以直接获取自己进程的MessageBox ...
谢谢 能留个联系方式吗? HOOK API的问题以后可以请教一下你
请容我 叫一声 师傅{:7_174:} C域 发表于 2014-7-12 15:30
谢谢 能留个联系方式吗? HOOK API的问题以后可以请教一下你
请容我 叫一声 师傅
864388942
我要去游泳。有事晚上说 メ㊣逆ご帅☆ 发表于 2014-7-11 16:47
代码给你
由于MessageBox是user32.dll的函数。模块地址一般情况下不变。所以直接获取自己进程的MessageBox ...
组建时有错误
C域 发表于 2014-7-12 10:13
版主 有VC 实现的方法吗???
哦! 这应该是delphi的语法,vc实现的方法可以的, 但是我想只要把原理掌握的话,vc实现照着delphi的原理实现也是可以的! 呵呵! 其实这篇文章也是我转载别人的,嗯....,你可以试一下! https://fishc.com.cn/forum.php?mod=viewthread&tid=66176&highlight=HOOK
页:
[1]