首页
社区
课程
招聘
[原创]win10 1909 逆向系列:(一. CR3无法被MmMapioSpace映射原理和绕过代码)
发表于: 2020-7-2 01:42 21793

[原创]win10 1909 逆向系列:(一. CR3无法被MmMapioSpace映射原理和绕过代码)

2020-7-2 01:42
21793


一、CR3无法被MmMapioSpace映射原理和绕过代码)

二、反向计算windows内核内存布局及代码实现

三、通过任意物理帧判断是否是CR3和解密得到所属EPROCESS

四、探寻文件体系

五、win10内存分区浅析

六、内存区对象(SectionObject)----1.页面支撑的内存区

七、绕过PG,实现内核HOOK

八、0E号异常---1.主动触发页面支撑的内存区

九、

十、







先通过windbg 看几个图来认识一下CR3相同的地方:


1。先选择两个不同进程的CR3。


2。然后查看页帧数据库的CR3物理页的信息,得知不同进程的PteAddress是一样的【每个人数值可能不同,但这类数值比较特殊,后面会用来做比较】


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

最后于 2021-4-6 16:55 被kanxue编辑 ,原因:
收藏
免费 11
支持
分享
打赏 + 2.00雪花
打赏次数 1 雪花 + 2.00
 
赞赏  丶kk   +2.00 2020/07/03
最新回复 (20)
雪    币: 364
活跃值: (10653)
能力值: ( LV13,RANK:385 )
在线值:
发帖
回帖
粉丝
2
收藏研究的时候再看.
2020-7-2 09:08
0
雪    币: 66
活跃值: (3269)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
此处应该有掌声   无私分享啊
2020-7-2 10:24
0
雪    币: 13493
活跃值: (6909)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
4
总结一下,通过修改MmPfnDatabase中MMPFN的PteAddress过MmMapIoSpace的地址判断
2020-7-2 10:28
2
雪    币: 4064
活跃值: (4402)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
5
感谢分享!
2020-7-2 10:40
0
雪    币: 5392
活跃值: (5462)
能力值: ( LV10,RANK:160 )
在线值:
发帖
回帖
粉丝
6
mark
2020-7-2 12:04
0
雪    币: 4709
活跃值: (1690)
能力值: ( LV2,RANK:15 )
在线值:
发帖
回帖
粉丝
7
mark
2020-7-2 13:22
0
雪    币: 42935
活跃值: (65742)
能力值: (RANK:135 )
在线值:
发帖
回帖
粉丝
8
mark,感谢分享!
2020-7-2 13:41
0
雪    币: 1553
活跃值: (2904)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
9
牛逼
2020-7-2 14:24
0
雪    币: 259
活跃值: (283)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
666
2020-7-3 08:49
0
雪    币: 259
活跃值: (283)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
MMPFN PteAddress为啥是一样的
2020-7-3 09:25
0
雪    币: 300
活跃值: (2767)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
mark
2020-7-4 23:18
0
雪    币: 682
活跃值: (1515)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
ZwCopyAll MMPFN PteAddress为啥是一样的
应该是印度程序员人为设计的
2020-11-12 15:54
0
雪    币: 919
活跃值: (1340)
能力值: ( LV2,RANK:15 )
在线值:
发帖
回帖
粉丝
14
PteAddress 应该是在一个页面上
2020-11-27 17:31
0
雪    币: 166
活跃值: (430)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
(1)0xffff89c4e2713898转换成二进制是1111111111111111  100010011 100010011  100010011 100010011  100010011000。100010011也就是PXE_SELFMAP_INDEX,转换成16进制是0x113。cr3的pte地址是由PXE_SELFMAP_INDEX计算出来的,所以每个进程的cr3的pte地址都相同。
(2)MmMapIoSpace的这种过滤可能是为了防止自映射页面对应的物理页面被用户修改后用来读写任意内存。064K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6&6N6i4k6S2N6r3W2S2i4K6u0r3M7r3q4Y4k6g2)9J5k6s2c8S2j5X3I4W2i4K6u0V1k6i4S2H3L8r3!0A6N6r3q4@1K9h3!0F1i4K6u0r3j5X3I4G2j5W2)9J5c8U0b7@1y4X3q4V1y4U0q4T1j5$3x3H3j5U0c8W2y4X3g2X3j5e0W2V1y4X3j5H3y4o6c8U0j5K6g2V1k6h3q4U0x3e0c8W2z5h3q4S2x3h3y4Q4x3V1k6U0N6X3g2Q4x3X3b7J5x3o6p5$3i4K6u0V1y4K6t1#2y4g2)9J5k6s2m8@1k6g2)9J5c8X3y4$3k6g2)9J5k6o6t1H3x3e0k6Q4x3X3b7%4x3U0f1#2i4K6u0V1M7s2c8W2i4K6u0r3L8h3q4A6L8W2)9J5k6h3x3`.
2021-4-8 22:46
2
雪    币: 3560
活跃值: (6130)
能力值: ( LV5,RANK:65 )
在线值:
发帖
回帖
粉丝
16
感谢!真的很有用!
2022-1-27 15:54
0
雪    币: 1
活跃值: (4446)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
为什么是 CR3*0x30,可以解惑一下么
2022-8-18 15:25
0
雪    币: 0
活跃值: (75)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
jielongtang 为什么是 CR3*0x30,可以解惑一下么

2023-12-27 20:50
1
雪    币: 524
活跃值: (1661)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
19
佬门能解答一下:PteAddress:0xffff89c4e2713898 转成虚拟地址 ffff89c4e2713000,发现没,他在Pte范围之内,这就是他的判定的原理,在这个范围之内,则判定失败。这句话什么意思吗 不是很明白谁和谁比较
2024-11-1 17:31
0
雪    币: 68
活跃值: (569)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
jielongtang 为什么是 CR3*0x30,可以解惑一下么
_MMPFN 的 size
2025-2-3 16:57
0
雪    币: 233
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
21
ZwCopyAll MMPFN PteAddress为啥是一样的

个人理解是一个物理页帧只有在被Unmap时需要知道它的表项的地址,然后寻址到位,给他删掉。PML4表基址本身就是虚拟映射寻址的过程,map或者unmap都没有意义,或者说就跟lz说的一样,本身这个CR3存的地址就是禁止去map的,用不到unmap,所以就这样搞了一个类似条件判断的标志数

最后于 2025-2-28 05:17 被FishAndCat编辑 ,原因:
2025-2-28 05:14
0
游客
登录 | 注册 方可回帖
返回