首页
社区
课程
招聘
[讨论]win7 x86/x64在R3获取系统全局钩子
2019-3-18 03:02 4448

[讨论]win7 x86/x64在R3获取系统全局钩子

2019-3-18 03:02
4448
最近又开始在windows上写代码了,刚好遇到一个问题,为了防止用户的输入被截取,需要检测当前系统的全局键盘钩子并卸载之,看了不少文章,大都是用ZwQuerySystemInformation和NtQueryObject来搞(肯定在内核搞要好些,只是小菜我现在还不熟练,不敢下手),里面涉及到的结构体,貌似大多数都不是公开的, 特别是有一个叫做SystemHandleInformation的东西 ,看了头文件,并没有这个功能号,网上也找了些代码瞅了瞅,实践了下,但是都不怎么理想,所以想问问坛子里的大佬,这种情况下,除开在kernel里面,在R3还有办法么?如果是在内核里面搞,该是怎么个思路呢?

[培训]《安卓高级研修班(网课)》月薪三万计划,掌 握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

收藏
点赞0
打赏
分享
最新回复 (18)
雪    币: 6124
活跃值: (4151)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
黑洛 1 2019-3-18 05:10
2
0
哎,你怎么知道这个钩子,是合法还是非法的呢?
不如降权
雪    币: 1484
活跃值: (1135)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
冰雄 2019-3-18 08:26
3
0
没有驱动防不了键盘监控
雪    币: 1449
活跃值: (642)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
半个大西瓜 2019-3-18 09:33
4
0
有驱动也防不了键盘监控,这些结构可以去参考WRK的代码
雪    币: 73
活跃值: (893)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
hixhi 2019-3-18 10:46
5
0
黑洛 哎,你怎么知道这个钩子,是合法还是非法的呢? 不如降权
合法非法这个还是不好说,但是出于自身的安全问题,把我自己的放在他的上面,这个应该没问题吧。。擦,怎么没发引用@黑洛
雪    币: 73
活跃值: (893)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
hixhi 2019-3-18 10:47
6
0
冰雄 没有驱动防不了键盘监控
我的想法是先检测了,在说防御的问题请大佬指点
雪    币: 73
活跃值: (893)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
hixhi 2019-3-18 10:48
7
0
wx_寻找清鸟 有驱动也防不了键盘监控,这些结构可以去参考WRK的代码
暂时没考虑在驱动层搞哈,就现在上层把工作做好了
雪    币: 12839
活跃值: (9008)
能力值: ( LV9,RANK:280 )
在线值:
发帖
回帖
粉丝
hzqst 3 2019-3-18 13:29
8
0
你说的那些R3方法都是他们扯淡的 全局消息钩子仅在内核有私有结构,并且win10上面变动很大,如果你用TA(WIN64AST)的代码,那么win10上面你会死的很惨
win10怎么办?自己老老实实IDA去啊
雪    币: 159
活跃值: (80)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
crackJ 1 2019-3-18 14:55
9
0
qq当年的办法,不断给自己的窗体挂全局钩子,全局钩子后挂的先执行,你先执行的时候把消息retrun掉,然后反复的执行这个操作,r3基本这样就可以对付个看书偷代码的小屁孩了,驱动要想搞的话前提是,这个机器只能装你的驱动,假如人家也能加载驱动,不好意思,大家都是驱动谁怕谁啊,假如对方不能加载驱动的话,直接把上层的进程的输入直接交给驱动下发不走消息不就得了,直接驱动模拟键盘输入,你强任你强。
雪    币: 73
活跃值: (893)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
hixhi 2019-3-18 22:26
10
0
hzqst 你说的那些R3方法都是他们扯淡的 全局消息钩子仅在内核有私有结构,并且win10上面变动很大,如果你用TA(WIN64AST)的代码,那么win10上面你会死的很惨 win10怎么办?自己老老实实I ...
是啊,很多方法,就算在WIN7上都未必行得通,还是老老实实IDA吧。按说前两年的方式,应该变化没这么大才对,但是我咋感觉我脱节了呢
雪    币: 73
活跃值: (893)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
hixhi 2019-3-18 22:27
11
0
crackJ qq当年的办法,不断给自己的窗体挂全局钩子,全局钩子后挂的先执行,你先执行的时候把消息retrun掉,然后反复的执行这个操作,r3基本这样就可以对付个看书偷代码的小屁孩了,驱动要想搞的话前提是,这个机 ...
这个注意感觉还比较合适,整个定时器,我也不停的挂钩子,内核这一层倒是有些思路,几年不写,连配置驱动开发环境都觉得头大,真是醉了
雪    币: 73
活跃值: (893)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
hixhi 2019-3-21 02:56
12
0
已经找到在R3下卸载其他钩子的办法。思路是通过desktop workstation,找到当前桌面的线程,然后获取到gSharedInfo,TEB,Win32ClientInfo->pDeskInfo,之后,就可以进行遍历当前系统的钩子了。。
雪    币: 12839
活跃值: (9008)
能力值: ( LV9,RANK:280 )
在线值:
发帖
回帖
粉丝
hzqst 3 2019-3-21 07:58
13
0
kongfubull 已经找到在R3下卸载其他钩子的办法。思路是通过desktop workstation,找到当前桌面的线程,然后获取到gSharedInfo,TEB,Win32ClientInfo->pDeskI ...
gSharedInfo是只读的你R3怎么卸载
雪    币: 73
活跃值: (893)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
hixhi 2019-3-21 11:56
14
0
hzqst gSharedInfo是只读的你R3怎么卸载
gSharedInfo只是内核的一个拷贝,导出了而已,虽说是在R3拿到的,但是仍然可以在R3用unhook进行卸载。我的理解是,钩子虽然是系统在维护,但是这种东西,既然在可以R3创建,那么也应该可以销毁。这个只是我的理解哈,我经过测试,确实很OK
雪    币: 223
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
雨林其萌-妮児 2019-3-25 00:55
15
0
我就是来学习的~!
雪    币: 248
活跃值: (3789)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
luskyc 2019-3-25 03:42
16
0
检测可以在R3搞,卸载必须R0
雪    币: 73
活跃值: (893)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
hixhi 2019-3-26 11:58
17
0
大家貌似都不信啊,放出github地址,原汁原味的,https://github.com/jay/gethooks,别说我藏私啊,注意分支
最后于 2019-3-26 11:59 被hixhi编辑 ,原因:
雪    币: 11350
活跃值: (4934)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
hhkqqs 1 2019-4-15 16:08
18
0
kongfubull 大家貌似都不信啊,放出github地址,原汁原味的,https://github.com/jay/gethooks,别说我藏私啊,注意分支
楼主,核心思路是不是系统会给每个进程映射钩子内核结构体信息到内存,地址等于内核地址减去ulClientDelta?
雪    币: 1541
活跃值: (1855)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
Ratin 2019-5-8 19:08
19
0
头文件里找不到,就去WDK和NTDDK里找哦
游客
登录 | 注册 方可回帖
返回