首页
社区
课程
招聘
[求助]HOOK IDT 0E蓝屏
发表于: 2020-4-27 22:42 5851

[求助]HOOK IDT 0E蓝屏

2020-4-27 22:42
5851
HookTrap0E PROC

       PUSH RBP
       SUB RSP, 158h
       PUSHFQ

       TEST BYTE PTR [RSP + 178h], 1
       JE T0D01
       SWAPGS
       PUSH RAX

       PUSH RCX

       MOV [RSP + 50h], RCX
       LEA RCX, [RSP + 18h]

       PUSH RDX
       PUSH RBX
       PUSH RSP
       PUSH RBP
       PUSH RSI
       PUSH RDI
       PUSH R8
       PUSH R9
       PUSH R10
       PUSH R11
       PUSH R12
       PUSH R13
       PUSH R14
       PUSH R15

       MOV [RCX + 30h], RAX
       MOV [RCX + 40h], RDX
       MOV [RCX + 140h], RBX
       MOV [RCX + 148h], RDI
       MOV [RCX + 150h], RSI
       MOV [RCX + 158h], RBP
       //用XOR RAX, RAX代替代理函数返回FALSE,执行原中断函数
       XOR RAX, RAX

       POP R15
       POP R14
       POP R13
       POP R12
       POP R11
       POP R10
       POP R9
       POP R8
       POP RDI
       POP RSI
       POP RBP
       POP RSP
       POP RBX
       POP RDX
       POP RCX

       SWAPGS

       TEST AL, AL
       POP RAX
       JE SHORT T0D01

       POPFQ
       ADD RSP, 168h
       IRETQ


T0D01: POPFQ
       ADD RSP, 160h
       JMP OldTrap0E


HookTrap0E ENDP

以上是HOOK的代码,简单的抄了一下某P,大约挂机12-24小时左右会蓝屏。
有懂的吗- -,不胜感激


[课程]Android-CTF解题方法汇总!

收藏
免费 0
支持
分享
最新回复 (30)
雪    币: 12848
活跃值: (9108)
能力值: ( LV9,RANK:280 )
在线值:
发帖
回帖
粉丝
2
patchguard
2020-4-27 23:31
0
雪    币: 665
活跃值: (1070)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
hzqst patchguard
大表哥,托飞总的福,PG已经过掉了呢
2020-4-28 00:24
0
雪    币: 248
活跃值: (3789)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
堆栈不平衡
2020-4-28 03:15
0
雪    币: 665
活跃值: (1070)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
yy虫子yy 堆栈不平衡
push rbp 然后sub rsp,158h,结尾对应add rsp,160h    应该平衡了呀
2020-4-28 03:37
0
雪    币: 12848
活跃值: (9108)
能力值: ( LV9,RANK:280 )
在线值:
发帖
回帖
粉丝
6
lytywg 大表哥,托飞总的福,PG已经过掉了呢
蓝屏原因发下,飞总那个shark在1903以上就已经不是100%稳定的了,它本身也要hook 0E,你也要hook,不就冲突了
2020-4-28 10:36
0
雪    币: 665
活跃值: (1070)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
hzqst 蓝屏原因发下,飞总那个shark在1903以上就已经不是100%稳定的了,它本身也要hook 0E,你也要hook,不就冲突了
虚拟机忘记设置蓝屏转储了,大表哥我现在开始挂,下次蓝屏发你
2020-4-28 15:03
0
雪    币: 665
活跃值: (1070)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
hzqst 蓝屏原因发下,飞总那个shark在1903以上就已经不是100%稳定的了,它本身也要hook 0E,你也要hook,不就冲突了
大表哥请教一下,虚拟机系统1709,Shark应该是稳定的。我看了下飞总的shark源码,没找到HOOK 0E的地方,能截个图我看看吗,不胜感激
2020-4-28 16:17
0
雪    币: 12848
活跃值: (9108)
能力值: ( LV9,RANK:280 )
在线值:
发帖
回帖
粉丝
9
lytywg 大表哥请教一下,虚拟机系统1709,Shark应该是稳定的。我看了下飞总的shark源码,没找到HOOK 0E的地方,能截个图我看看吗,不胜感激

1709 shark不会hook 0e,不过你得保证你hook的0e是真 KiPageFault而不是什么KiPageFaultShadow,我没用过鹅厂的代码不过我自己写的hook entry是很稳定的

12~24小时 个人认为还是PG的问题

最后于 2020-4-28 16:52 被hzqst编辑 ,原因:
2020-4-28 16:48
0
雪    币: 665
活跃值: (1070)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
HookTrap0E PROC

       PUSH RBP
       SUB RSP, 158h
       PUSHFQ
       POPFQ
       ADD RSP, 160h
       JMP OldTrap0E

HookTrap0E ENDP

昨天已经改成这样了,仍然在经过12-24小时左右收获蓝屏套餐,不知道为什么蓝屏转储没有生成(可能是默认小内存转储忘改了吧,今天重新设置了,挂半天坐等蓝屏),应该和hook写法没关系了,也许真的是和什么东西冲突了,亦或是shark没给PG fuck干净(不应该啊,飞总NB)。


确实是hook在了KiPageFault




最后于 2020-4-28 17:20 被lytywg编辑 ,原因:
2020-4-28 17:18
0
雪    币: 12848
活跃值: (9108)
能力值: ( LV9,RANK:280 )
在线值:
发帖
回帖
粉丝
11
lytywg HookTrap0E PROC        PU ...
这么简单还拉闸那铁是PG问题了
shark我记得确实是干不干净的,特别是1903以前
2020-4-28 19:57
0
雪    币: 362
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
12
lytywg push rbp 然后sub rsp,158h,结尾对应add rsp,160h    应该平衡了呀

这代码我在win7下测试是稳定的。tp也是可能蓝屏的,之前跟群里的人DNF打团,打到一半他蓝屏了。

最后于 2020-4-28 23:17 被gdgdgdg编辑 ,原因:
2020-4-28 22:36
0
雪    币: 665
活跃值: (1070)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
应该是Shark在1709侧漏了,谢谢各位的帮助,打个pg补丁,经过测试没蓝屏了
2020-4-29 03:18
0
雪    币: 5734
活跃值: (1737)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
14
这就简单了,你先关掉PG,不HOOK 0E,试试挂机12-24小时,蓝屏那就是我的锅了
2020-4-29 10:24
0
雪    币: 665
活跃值: (1070)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
小艾 这就简单了,你先关掉PG,不HOOK 0E,试试挂机12-24小时,蓝屏那就是我的锅了

退一万步也不会是您的锅哈,源码让人学到了很多我继续挂机分析看看吧...

最后于 2020-4-29 17:08 被lytywg编辑 ,原因:
2020-4-29 16:00
0
雪    币: 665
活跃值: (1070)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16

IDT HOOK的代码借鉴(抄)了https://github.com/kanren3/x64-IDT-HOOK

作者好像也是来自看雪的大兄弟,感谢大兄弟的开源


测试环境虚拟机win10 1709,配合shark。


情况如下:

  1. inline hook 0E中断,应该不会蓝屏,目前挂机了30小时左右了

  2. 修改IDT表的原中断函数指针指向我们的代理函数(IDT HOOK),在12-24小时左右收到了蓝屏套餐(本次测试12小时左右就蓝屏了)


源码上传了,希望有大手子能指点一二,一脸懵逼现在,另一台虚拟机打了PG补丁,似乎仍然蓝屏。好像shark是没问题的。。。


ps:不知道怎么上传附件,用链接代替算了,在下面

最后于 2020-5-2 20:34 被lytywg编辑 ,原因:
2020-5-1 08:36
0
雪    币: 248
活跃值: (3789)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
idt hook多核多线程的通病是内核栈不够用,使用同一个内核栈,很容易栈溢出
蓝屏不一定是pg触发的,在某个时刻
某个idt hook任务繁忙,频繁触发,就引起了栈溢出,之前做#GP Hook就是,系统任务繁忙,#GP触发也就频繁了,最后栈溢出导致三重故障
2020-5-1 09:36
0
雪    币: 665
活跃值: (1070)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
yy虫子yy idt hook多核多线程的通病是内核栈不够用,使用同一个内核栈,很容易栈溢出 蓝屏不一定是pg触发的,在某个时刻 某个idt hook任务繁忙,频繁触发,就引起了栈溢出,之前做#GP Hook就 ...
这套源码inline hook 0E不会异常,而且源码里测试用的idt代理函数使用的栈空间甚至还在trapframe的范围里,完全没有超过,应该不是的
2020-5-1 15:05
0
雪    币: 248
活跃值: (3789)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
lytywg 这套源码inline hook 0E不会异常,而且源码里测试用的idt代理函数使用的栈空间甚至还在trapframe的范围里,完全没有超过,应该不是的[em_78]

你频繁触发0E试试就知道了
1万次,10万次,100万次…

用多个进程同时触发,应该会很快蓝屏

并且idt中断使用的内核栈并不是trapframe

最后于 2020-5-1 17:31 被luskyc编辑 ,原因:
2020-5-1 17:29
0
雪    币: 12848
活跃值: (9108)
能力值: ( LV9,RANK:280 )
在线值:
发帖
回帖
粉丝
20
yy虫子yy lytywg 这套源码inline hook 0E不会异常,而且源码里测试用的idt代理函数使用的栈空间甚至还在trapframe的范围里,完全没有超过,应该不是 ...
我也觉得和栈和触发次数没关系
2020-5-2 09:32
0
雪    币: 5734
活跃值: (1737)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
21
你这个不是0E么 挂调试器啊 
2020-5-2 11:04
0
雪    币: 248
活跃值: (3789)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
lytywg IDT HOOK的代码借鉴(抄)了https://github.com/kanren3/x64-IDT-HOOK作者好像也是来自看雪的大兄弟,感谢大兄弟的开源测试环境虚拟机win10 1709,配合s ...
inline hook不蓝屏,idt hook却蓝屏
是不是pg的问题可以用排除法测试
调试模式下,看看idt hook是否蓝屏
如果调试模式下也蓝屏,就不是pg的问题了
要是没有蓝屏,那就是pg没有完全过掉
pg检测到idt表被篡改就蓝了,可能是shark没有处理这个
2020-5-2 11:20
0
雪    币: 665
活跃值: (1070)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
好吧,感觉测试不够,我前边的推测可能有一半是错的。。。我挂个windbg测试一下(之前VirtualKD用惯了懒得搭双机调试环境了)。。。搞明白了回头专门发个帖避免后来人踩坑好了
2020-5-2 13:22
0
雪    币: 1042
活跃值: (470)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
24
lytywg 好吧,感觉测试不够,我前边的推测可能有一半是错的。。。我挂个windbg测试一下(之前VirtualKD用惯了懒得搭双机调试环境了)。。。搞明白了回头专门发个帖避免后来人踩坑好了[em_50]
附件过期了 想看看中继函数的写法
2020-5-2 14:09
0
雪    币: 665
活跃值: (1070)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
25



第一次知道看雪的附件会过期,重新上传了还是附件不存在,还是发下git链接吧


https://github.com/LLLZed/IDTHOOK


HookTrap0E PROC

   JMP OldTrap0E
       
HookTrap0E ENDP


最新的测试结果,现在代理换成以上的写法,OldTrap0E是一个全局变量 extern ULONG_PTR OldTrap0E; 其值等于原KiPageFault函数指针,这样的写法应该没用到堆栈了,可是仍然蓝屏了,18小时左右。测试环境虚拟机win10 1709,配合shark



最后于 2020-5-2 20:22 被lytywg编辑 ,原因:
2020-5-2 20:19
0
游客
登录 | 注册 方可回帖
返回
//