首页
社区
课程
招聘
[分享]老文章系列:过Patchguard的梗
发表于: 2014-4-30 04:28 40295

[分享]老文章系列:过Patchguard的梗

2014-4-30 04:28
40295

  这里我研究的问题只有Patchguard怎么让丫去死,至于DSE这种东西,随便找个过时的有任意代码执行问题的驱动(比如DCR,VBOX,金山某士)去Patch一下CI就可以了。今天我也不是来跟人分享VMX或者patch文件那些无功夫的过PG手法。
  我今天要做的是继续以前老外的pg的梗(由于我的笔记本跑win8不能10秒开机,所以只能用win7来撸)。
  老外有几篇关于PG攻击的文章:
  297K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6h3#2U0j5h3k6W2k6g2)9J5k6h3y4G2L8g2)9J5c8X3W2F1i4K6u0r3M7X3g2K6L8%4g2J5j5$3g2K6i4K6u0r3M7X3g2H3L8%4u0@1M7#2)9J5c8Y4u0H3i4K6u0V1k6r3g2X3k6h3q4@1K9h3&6Y4i4K6u0V1M7r3q4@1j5$3S2Y4N6h3q4J5k6q4)9J5k6i4m8V1k6R3`.`.
  955K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6i4g2F1K9h3&6X3L8%4u0E0k6h3c8Q4x3X3g2G2M7X3N6Q4x3V1k6Q4x3@1k6$3i4K6y4p5x3#2)9J5y4X3q4Q4x3@1b7K6i4K6t1$3N6q4)9K6c8s2y4#2L8i4u0&6
  ae3K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6i4g2F1K9h3&6X3L8%4u0E0k6h3c8Q4x3X3g2G2M7X3N6Q4x3V1k6Q4x3@1k6$3i4K6y4p5z5q4)9J5y4X3q4Q4x3@1b7#2i4K6t1$3N6q4)9K6c8s2y4#2L8i4u0&6
  aecK9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6i4A6W2M7U0m8E0k6h3#2Q4x3X3g2K6K9#2)9J5c8W2)9K6c8Y4m8Q4x3@1b7J5y4K6p5`.
  
  不过统统不能解决真正的问题,最后一个连接除外。不过其中的分析让我们知道两件事儿,第一件事儿是PG的蓝屏是通过DPC或者TIMER调用KeBugCheckEx来的。第二件事儿是PG调用KeBugCheckEx的时候,会恢复KeBugCheckEx上的修改。
  通过读老外的文章我们知道通过DPC来的必须经过KiRetireDpcList这个玩意才能到达蓝屏(而通过TIMER来的经过的函数比较奇怪,这里也不想管他)。
  老外有一个思路就是hook KeBugCheckEx来处理TIMER的PG引发的0x109蓝屏,但是因为KeBugCheckEx有恢复hook的可能(新的PG是复制了BugCheck的代码),所以我选择了一个KeBugCheckEx内部的调用的函数来进行挂钩,然后通过堆栈读出RCX判断一下错误号,这个调用函数也是老外早就提供好的就是RtlCaptureContext。
  
  到这里我都和老外的思路近似,之后后面就不一样了。我只有2个hook点,我不想判断DPC是不是PG的,也不研究线程TIMER的枚举,我直接在KiRetireDpcList这里保存运行环境(CONTEXT),然后继续调用KiRetireDpcList代码,然后保存的恢复运行环境(RIP修好)。
  如果发生了0x109蓝屏,那么经过我挂钩的RtlCaptureContext时,我主动插入一个DPC到DPC链条去,然后恢复保存的CONTEXT到Call KiRetireDpcList处的去重新执行的话(也就是说,把时光倒流了),这时候PG就无法蓝屏了。但是这里有一个小问题,如果来自线程TIMER的PG蓝屏,则不能开蜘蛛的大招 回到过去 去Pass掉TIMER。不过windows的机制让我知道如果在pg的timer里的时候,IRQL应该是PASSIVE级别的,在PASSIVE级别的话,可以将整个执行流程跳入线程开始去直接运行(这点是老外的资料里发现然后结合windbg调试出来的)。
  
  那么我绕过PG的工具设计思路就是:

//有2个hook点!
//RtlCaptureContext-->保存ecx等物-->OrgCap-->ProcPatchGuard-->其他
//											-->ECX==109 ,来自BugCheck-->修复STACK,重新插入空DPC
//																		-->如果IRQL是PASSIVE,则CallPointer去
//																		-->不是PASSIVE,则恢复环境-->到KiRetireDpcList重新执行DPC序列
//KiRetireDpcList -->保存环境-->原始-->还原环境
//

[培训]科锐逆向工程师培训第53期2025年7月8日开班!

收藏
免费 6
支持
分享
最新回复 (65)
雪    币: 8833
活跃值: (2419)
能力值: ( LV12,RANK:760 )
在线值:
发帖
回帖
粉丝
2
仅以此文献给我死去多年的“噬身之蛇”QQ群以及那个被叫做UROBOROS的项目~
2014-4-30 04:51
0
雪    币: 1626
活跃值: (163)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
3
Thanks for share
2014-4-30 05:46
0
雪    币: 0
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
so great
2014-4-30 07:31
0
雪    币: 239
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
我第一次离v大这么近,是个板凳耶
2014-4-30 07:35
0
雪    币: 451
活跃值: (78)
能力值: ( LV12,RANK:470 )
在线值:
发帖
回帖
粉丝
6
movdqa  貌似是SSE指令
还没用过这种高级指令 学习了
2014-4-30 07:49
0
雪    币: 211
活跃值: (13)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
v大v5,我等小菜5.1有事干了。3ks
2014-4-30 07:54
0
雪    币: 68
活跃值: (104)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
8
V大顶你
2014-4-30 07:59
0
雪    币: 217
活跃值: (903)
能力值: (RANK:290 )
在线值:
发帖
回帖
粉丝
9
看见一个重来没见过的指令 v5
2014-4-30 08:07
0
雪    币: 69
活跃值: (252)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
wmg
10
好东西,学习了~~
2014-4-30 08:29
0
雪    币: 135
活跃值: (63)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
11
占座学习
噬身之蛇好像是碧轨psp汉化组的名字,是一个吗。
2014-4-30 08:49
0
雪    币: 90
活跃值: (383)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
4点。。。大牛都不用睡觉的吗?   膜拜
2014-4-30 09:21
0
雪    币: 95
活跃值: (119)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
大部分都看不懂,,,,,,
2014-4-30 09:21
0
雪    币: 615
活跃值: (765)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
14
这种文章,这种作者,无条件顶起,,,,,,,,这么好的文章是不是要交点稿费呀
2014-4-30 09:24
0
雪    币: 208
活跃值: (40)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
15
看不懂啊,已经对windows无爱了。
2014-4-30 09:36
0
雪    币: 3836
活跃值: (4142)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
V神就是牛逼,但要注意身体啊。、
2014-4-30 09:40
0
雪    币: 608
活跃值: (703)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
17
噬身之蛇....好吧
2014-4-30 09:57
0
雪    币: 2673
活跃值: (3560)
能力值: ( LV13,RANK:1760 )
在线值:
发帖
回帖
粉丝
18
老V霸气侧漏哇,4点钟还在搞
2014-4-30 10:12
0
雪    币: 269
活跃值: (906)
能力值: ( LV12,RANK:345 )
在线值:
发帖
回帖
粉丝
19
“噬身之蛇”是不是”大蛇丸“的代号?
2014-4-30 10:15
0
雪    币: 135
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
老V,给我感觉就像<来自星星的你>。。。。
2014-4-30 10:19
0
雪    币: 8197
活跃值: (3312)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
21
2003 x64不能使用,其他就不试了
2014-4-30 10:55
0
雪    币: 18
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
21楼。。。。。。。。。。。
2014-4-30 11:19
0
雪    币: 2982
活跃值: (3370)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
大部分都看不懂
2014-4-30 13:25
0
雪    币: 8833
活跃值: (2419)
能力值: ( LV12,RANK:760 )
在线值:
发帖
回帖
粉丝
24
2003 x64的汇编代码有点区别,另外说句,你用的代码和这里的代码有好多行不一样的~
这个代码2003里不出PG蓝屏只出1E的~
2014-4-30 13:40
0
雪    币: 0
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
25
这就是传说中的天书么
2014-4-30 13:51
0
游客
登录 | 注册 方可回帖
返回