今天观看Windows黑客编程一书中3.1节,全局钩子注入DLL,这是利用Windows底层机制(Windows是由消息),所有事件都是由消息驱动的,而不同功能更钩子能够监视不同的消息,全局钩子能够作用与整个系统且需要DLL载入,利用这一优点WH_GETMESSAGE消息的全局钩子,能够监听消息队列,确实Windows黑客编程一书上说,每个消息都有一个消息队列所以所有进程都会加载钩子DLL,这句话在实验前,本本人是没有一点怀疑的,知道做实验的时候发现有一些进程并没有加载,当然也有一些进程加载了,有些是系统进程,有些不是,回想起来发现控制台程序,没有消息队列。。。。。。实验是在Xp下进程的,
通过控制台对照实验可以证明,给控制台程序添加了消息循环就可以被WH_GETMESSAGE消息HOOK ,所以得出结论没有消息队列的程序不能被全局WH_GETMESSAGE消息HOOK
下面这些进程也没有
,这些进程应该我猜测这些没有注入DLL的系统进程,都是控制台程序,当然这里我没有测试所以我也就不敢肯定的回答。希望能够帮助到一些偏移,同时也向各位大佬求教一下
[看雪官方培训]《安卓高级研修班(网课)》9月班开始招生!顶尖技术、挑战极限、工资翻倍!
最后于 1天前 被taolaoda编辑 ,原因: 笔误
|
|
---|---|
|
你怕是对消息这个有什么误解,楼主。windows是以消息为基础,以事件驱动之,反正书上这么说的。消息处理,消息处理总的有个对象,谁来处理?我觉得应该先搞清楚这个问题。还有,你可以看看WH_GETMESSAGE的MSDN的描述 |
|
GetMsgProc callback function 注意这句:The system calls this function whenever the GetMessage or PeekMessage function has retrieved a message from an application message queue. |
|
消息处理肯定是我们定义的消息回调函数处理,当时得先从消息循环里取出消息,我的实验结构是给控制台加一个消息循环就能够被 WH_GETMESSAGE钩子注入,确实证明的是 WH_GETMESSAGE钩子从消息队列取出监听的的是GetMessage或者PostMessage从消息队列取消息的时候触发 ,多谢前辈指点,还有每个进程都有一个消息队列(我看一些帖子看傻了 百度很多帖子都是直接控制台程序没有消息队列,应该只是默认没有消息循环,不处理消息)我的结论是错误的,帖子就不删了,让后来者能够警醒,也感谢大佬警醒了我,回过头了发现学到了不少知识 |
返回