全局API HOOK只能影响调用进程

kinghawk 2006-07-25 03:10:59
采用改写IAT的方法注入全局API HOOK,DLL为APIHOOK_DLL,调用程序为APIHOOK_EXE,SetWindowHookEx的第四个参数为0,DLL句柄正确。
现在的问题是,这个DLL只能HOOK到APIHOOK_EXE的进程中,并且使用正确。但是我明明使用了全局HOOK,应该是可以对系统中所有线程进行HOOK才对呀?
我在网上看到有些朋友也遇到了类似的问题,希望知道解决办法的大侠帮忙分析一下原因。非常感谢
...全文
674 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
化外之民 2006-07-27
  • 打赏
  • 举报
回复
修改IAT的那部分必须放到回调函数里面去执行,由系统来调用。而且你还要HOOK LoadLibrary等函数才能HOOK到后面加载的模块。
kinghawk 2006-07-27
  • 打赏
  • 举报
回复
晕,不能增加分数么?
kinghawk 2006-07-27
  • 打赏
  • 举报
回复
frank_necsthz(磊磊)兄:请问,你提到的instance是指哪一个?
maijian(asmvc)雄:谢谢支持,我用Windows核心编程中的代码可以HOOK住MessageBox,用我自己的代码,只HOOK调用函数,也可以,就是无法HOOK住全局的MessageBox,奇怪。
希望大家继续提出宝贵的建议,这也是我们共同学习的依次机会,我马上再增加帖子的分数,就当作对大家回复的感谢。
frank_necsthz 2006-07-26
  • 打赏
  • 举报
回复
全局钩子,不要忘了,全局数据共享,即#pragma data_seg(".sharedata")
另外,instance也不要忘记设定
kinghawk 2006-07-26
  • 打赏
  • 举报
回复
谢谢楼上的兄弟,我也知道IAT方法Hook全局API不是对所有的API都有效,我也没准备HOOK所有的API,对于改写函数开始的四字节,用汇编指令JMP我已经实现了,我提的这个问题完全是学术上的,呵呵。
现在我用MessageBoxA(W)试验都没有成功,说明我的代码中还是有问题。网上的代码的确很多,比较并没有什么本质的区别(我并没有一行一行的比较分析,这是最后一步做法),我还是努力查找原因,如果有幸解决了,一定和大家共享……。
希望大家更踊跃的讨论。
maijian 2006-07-26
  • 打赏
  • 举报
回复
有一点我要跟楼主讲清楚的,就是<<Windows 2000NT核心编程>>里面讲的IAT方法Hook全局API是有问题的,不是全部的API都Hook得了,本人很早以前就试过了,至于金山之类的软件它们是用另外一种方法,改写函数开始的4个字节,JMP xxxxxxxx这样来实现的,这种方法才是最有效的
LookSail 2006-07-26
  • 打赏
  • 举报
回复
网上这样的代码大把,你去对比一下为什么别人 SetWindowHookEx 0 就可以
kinghawk 2006-07-26
  • 打赏
  • 举报
回复
我觉得肯定是在代码的什么地方出了问题,我试了试Windows核心编成上的代码,的确可以全局HOOK,比较了一下我的代码,发现两者的实现原理是一样的,只是个别函数的使用不同,努力分析中。
难道SetWindowHookEx的第4个参数为0页不能全局HOOK么?难道还有别地方需要特别注意?奇怪
DentistryDoctor 2006-07-26
  • 打赏
  • 举报
回复
你看钩子的相关代码了。
maijian 2006-07-26
  • 打赏
  • 举报
回复
楼主,不是你代码的问题,MessageBox不是肯定可以Hook到的,我以前用IAT的方法就是这样了,在MFC里面也Hook不到AfxMessageBox,虽然AfxMessageBox最终还是调用MessageBox,但就是Hook不到,用VB也差不多,其实不是楼主你的代码有问题,而是IAT这种方法的问题而已
healer_kx 2006-07-25
  • 打赏
  • 举报
回复
词霸为啥能hook每个程序呢/?还不是临时hook的.
healer_kx 2006-07-25
  • 打赏
  • 举报
回复
那你只能该系统的dll了。。。

15,473

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧