首页
社区
课程
招聘
[原创]CR3解密之MMPFN->EPROCESS通杀分析
发表于: 2025-7-27 20:14 9168

[原创]CR3解密之MMPFN->EPROCESS通杀分析

2025-7-27 20:14
9168

 // 遍历MMPFN 获取真实CR3地址

 for (ULONG64 i = 0; i < maxCount; ++i)

 {

     ULONG64 Buddy = (ULONG64)local_MMPFN[i].u1.Buddy;

     if (Buddy == NULL)

         continue;


     

     // 计算解密后的 eprocess 值

     ULONG64 EPROCESS = (((Buddy>>0xD)&0xFFFFFFFFFFFFFFF0)|0xFFFF800000000000);


     if (Buddy == eproc || EPROCESS== eproc)

     {

         dribase = i<< PAGE_SHIFT;   //这里就是你要的真实CR3地址

         break;

     }

 }      


 因为我们不需要从EPROCESS中拿dirbase  不管CR3加密与否  


0: kd> dt _KPROCESS

nt!_KPROCESS

   +0x000 Header           : _DISPATCHER_HEADER

   +0x018 ProfileListHead  : _LIST_ENTRY

   +0x028 DirectoryTableBase : Uint8B


关于CR3的加密 就是 各大AC修改了EPROCESS->DirectoryTableBase的数值 然后接管了内核全局异常处理


KeAttachProcess或者操作错误的CR3 都会触发异常 然后走它的异常接管  它上报或者给你返回空字节的分页给你


这就是为什么频繁的附加进程上下文导致GG和读不到数据


那么就有人要问了为什么要这样运算 (((Buddy>>0xD)&0xFFFFFFFFFFFFFFF0)|0xFFFF800000000000) ,你去问微软


至于外面杂七杂八一大堆的解密 这里不做点评 ,你觉得好用你就去用 


W7-W10是这套固定的运算方法  W7的MMPFN中EPROCESS并未经过运算保存 直接就是对象地址


W10需要位运算还原出对象地址  这套方案不管加密没加密都能返回正确的EPROCESS


maxCount=最大物理页数量  MmGetPhysicalMemoryRanges可以获取到   


接下来是W11各版本的通杀方案 这里以24H2为例子



Owning Process            ffffad8b1c7f3080       Image:         procexp64.exe

ffffad8b1c7f3080+0x28=0x0000001146a3002  CR3     00000001`146a3002&~FFF >> 12 =1146A3 页目录索引    


然后众所周知MMPFN结构大小为0x30 固定的  其中+0x0=加密后的对象地址  +0x8=ptebaseaddress   w7中+0x10=tebaseaddress


根据以上信息得知该MMPFN地址为MmPfnDataBase+0x1146A3 *0x30  



00008000`638fe613 这个数值就是加密后的对象地址   


MMPFN调试下断得出MiGetPageTablePfnBuddyRaw为解密对象地址的函数,参数1为MMPFN地址 


传播安全知识、拓宽行业人脉——看雪讲师团队等你加入!

最后于 2025-7-29 11:11 被mmpfn编辑 ,原因:
收藏
免费 141
支持
分享
最新回复 (120)
雪    币: 7
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
2
1
2025-7-27 20:23
0
雪    币: 0
活跃值: (165)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
学习学习 正好要用的
2025-7-27 22:37
0
雪    币: 401
活跃值: (1902)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
4
mark
2025-7-28 11:24
0
雪    币: 5204
活跃值: (6068)
能力值: ( LV10,RANK:160 )
在线值:
发帖
回帖
粉丝
5
mark
2025-7-29 05:29
0
雪    币: 477
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
6
非常支持你的观点!
2025-7-29 08:32
0
雪    币: 26
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
7
看看
2025-7-29 08:42
0
雪    币: 20
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
8
mark
2025-7-29 09:54
0
雪    币: 0
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
9
学习学习
2025-7-29 10:37
0
雪    币: 898
活跃值: (5249)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
10
mark
2025-7-29 11:26
0
雪    币: 34
活跃值: (8159)
能力值: ( LV9,RANK:335 )
在线值:
发帖
回帖
粉丝
11
mark
2025-7-29 13:47
0
雪    币: 108
活跃值: (1494)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
老哥感谢你啊
2025-7-29 15:55
0
雪    币: 106
活跃值: (1369)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
mark
2025-7-29 16:19
0
雪    币: 200
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
14
mark
2025-7-30 10:38
0
雪    币: 3595
活跃值: (6301)
能力值: ( LV5,RANK:65 )
在线值:
发帖
回帖
粉丝
15
1
2025-7-30 16:14
0
雪    币: 292
活跃值: (1362)
能力值: ( LV3,RANK:29 )
在线值:
发帖
回帖
粉丝
16
1
2025-7-30 21:18
0
雪    币: 88
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
17
非常支持你的观点!
2025-7-30 21:25
0
雪    币: 188
活跃值: (1636)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
mark
2025-7-30 21:54
0
雪    币: 2
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
19
8888888888
2025-7-31 03:07
0
雪    币: 5617
活跃值: (6482)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
我听说这种读写 效率很低 我没使用过 不知道真假
2025-7-31 08:19
0
雪    币: 4575
活跃值: (4154)
能力值: ( LV8,RANK:147 )
在线值:
发帖
回帖
粉丝
21
mark
2025-7-31 09:36
0
雪    币: 1
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
22
学习学习
2025-7-31 09:48
0
雪    币: 0
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
23
学习学习
2025-7-31 17:40
0
雪    币: 2
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
24
学习学习
2025-7-31 19:06
1
雪    币: 23
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
25
学习学习
2025-7-31 21:37
0
游客
登录 | 注册 方可回帖
返回