-
-
[旧帖]
[讨论]对MessageBoxA的HOOK
0.00雪花
-
发表于:
2013-12-13 16:52
1573
-
[旧帖] [讨论]对MessageBoxA的HOOK
0.00雪花
最近在学习inline hook,就从简单的MessageBoxA下手,因为此前在看雪中有前辈发过相关的帖子,原文请参见(http://bbs.pediy.com/showthread.php?t=98184),但是经过实验,是有一些问题的,小弟就附上自己修改过的代码(实验平台:XP SP3 编译工具:VC6),以及对上一帖中存在问题的分析。如果有不对的地方,请大家指正。
堆栈没有保持平衡,有2个地方:
1. MyMessageBox定义没有加__declspec(naked),编译器就会增加修改保存EBP,并修改EBP的代码
2. 在于这个函数内部,它调用了Srcs(),OldMessageBox(),调用本身其实就是一个把参数压栈,保存返回地址以及跳转的过程,所以这也会导致堆栈的不平衡
还有一点,其实我觉得不需要将MesasgeBoxA的前5字节写死,进行比对;可以把前五字节保存起来,然后进行HOOK,当不需要HOOK的时候,用保存的代码进行恢复。
也不肯定一定正确,所以请大家指正。
如果对inline hook感兴趣也可以参考另一篇文章:
http://bbs.pediy.com/showthread.php?t=98493
附件用法:
正确编译之后,写一个windows程序,加载dll,并且调用InstallEngine接口。然后再写一个测试程序调用MessageBoxA。
谢谢
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!