论坛首页 安全编程开发区 阅读主题

[原创]无需解密页帧中的进程结构来获取真实CR3

207 浏览 17 回复
#1 楼主 2026-06-01 21:08:48
EAX,ACX等内核级AC都陆续上了CR3的加密,即想办法接管内核异常并将_KPROCESS.DirectoryTableBase的值写份错的,然后在附加等一切需要访问_KPROCESS.DirectoryTableBase的操作触发异常时,在接管的内核异常回调中修复DirectoryTableBase的值
而作为内核"安全"开发者,我们需要来获取进程真实的CR3来读取进程数据检查安不安全~
所以,想办法解密或获取真实CR3是非常有必要的。
市场上大多数在售的非法驱动采用的都是 学技术打豆豆 大佬的方法:
通过CR3的页帧中ListEntry.Flink会指向被加密的进程K/EPROCESS结构指针这个原理,结合遍历MmPfnDataBase来不断比对页帧的ListEntry.Flink解密后是否为需要找的进程K/EPROCESS结构指针,从而获取到真实的CR3
但是这个方法有个缺点:即 在Win10/11部分版本(经测Win11 24H2以及群友反馈部分高版本Win10/11)中,对应的加密算法(MiSetPageTablePfnBuddy函数中可见)与其他版本不同,需要额外处理,适配起来很麻烦
(下图为除特殊版本外,默认的加密K/EPROCESS方法)
那么有没有什么办法可以不解密页帧中ListEntry.Flink,就可以得出当前页帧是不是我们需要的CR3呢?有的,我在老外开源的EFI-APSPatchAuthority项目(见附件)中找到了如何通过进程的任意线性地址,逆推出CR3!


回复或点赞可查看完整内容

---
来源: 看雪论坛
原文链接: https://bbs.kanxue.com/thread-289421.htm
#2 2026-06-01 21:08:48
牛逼大佬 春看看
#3 2026-06-01 21:08:48
看看
#4 2026-06-01 21:08:48
谢谢分享
#5 2026-06-01 21:08:48
mb_xknjnwpm


插个apc直接__readcr3不就完事了吗

插内核apc 还是用户apc
#6 2026-06-01 21:08:48
老外用的也是 学技术打豆豆 的方法遍历MMPFN吗?
#7 2026-06-01 21:08:48
感谢分享
#8 2026-06-01 21:08:48
感谢分享
#9 2026-06-01 21:08:48
mark
#10 2026-06-01 21:08:48
狠狠学习学习
#11 2026-06-01 21:08:48
前排广告位!
#12 2026-06-01 21:08:48
狠狠学习学习
#13 2026-06-01 21:08:48
谢谢你的细致分析,受益匪浅!
#14 2026-06-01 21:08:48
插个apc直接__readcr3不就完事了吗
#15 2026-06-01 21:08:48
EAC:十万一只手
#16 2026-06-01 21:08:48
EAC:已安排
‹ 上一页 1 2 下一页 ›

请登录后参与讨论

立即登录 注册账号