-
-
[原创]win10 1909逆向(0E号异常---1.主动触发页面支撑的内存区)
-
发表于:
2021-4-6 15:13
9987
-
[原创]win10 1909逆向(0E号异常---1.主动触发页面支撑的内存区)
这里是完成上一篇文章《win10 1909逆向(内存区对象(SectionObject)----1.页面支撑的内存区)》的实现部分,了解共享内存映射后,windows是如何通过0E号异常完成物理页的挂靠和管理,因为0E号异常过于庞大,和上一篇一样,将分支剪掉,将判断过程忽略掉,仅保留最核心的关键部分。
首先在映射完成后下一个中断,这样进入Windbg里面,我们bp 到swapgs的下面的地址,因为是共享内存,PTE是没有值的,直接g运行。
进入 KiPageFaultShadow和KiPageFault,这里的主要目的是用来填充KTRAP_FRAME,然后进入MmAccessFault:
进入KiPageFault
中断进入过程中,0E号异常会有相应的错误码,我们这里的ErrorCode是为6,下面是错误码的解释。( 用户模式 | 写),在用户模式下的写操作引起的异常。
进入MmAccessFault:
1.创建一个结构体,并进行相应的初始化:
struct _FAULTCONTEXT
{
PVOID VirtualAddress;
UINT64 ErrorCode;
PKTRAP_FRAME pTrapFrame;
PVOID PointerPte;
PVOID PointerPde;
PVOID PointerPpe;
PVOID PointerPxe;
PVOID pProcessVm;
UINT32 U9Low;
char irql;
char u9flags;
PVOID U10;
char Flags;
PVOID Vad;
PVOID ProtoPTE;
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!