1、透过MmIsAddressValid看Windows分页机制标 题:【原创】透过MmIsAddressValid看Windows分页机制作 者:combojiang时 间:2008-03-16,00:53:01链 接:这两天在逆向分析MmIsAddressValid这个函数,学习了下PAE分页机制,并且也发现了一个问题。就是本机ntoskrnl中导出的MmIsAddressValid函数是采用非PAE方式的,而本机XPSP2系统采用的却是PAE方式的分页机制。这个可以通过windbg中看到。在这里写出来与大家分享。关于PAE(PhysicalAddressExtension物理地址扩展)是In
2、telx86PentiumPro处理器引入的一种内存映射模式。在此模式下CPU可以访问多达64GB的物理内存。在PAE模式下PDE和PTE为64位,而不是原来的32位。其结构如下:lkddt_hardware_ptent!_HARDWARE_PTE+0x000Valid:Pos0,1Bit+0x000Write:Pos1,1Bit+0x000Owner:Pos2,1Bit+0x000WriteThrough:Pos3,1Bit+0x000CacheDisable:Pos4,1Bit+0x000Accessed:Pos5,1Bit+0x000Dirty:Pos6,1Bit+0x000LargeP
3、age:Pos7,1Bit+0x000Global:Pos8,1Bit+0x000CopyOnWrite:Pos9,1Bit+0x000Prototype:Pos10,1Bit+0x000reserved0:Pos11,1Bit+0x000PageFrameNumber:Pos12,26Bits+0x000reserved1:Pos38,26Bits+0x000LowPart:Uint4B+0x004HighPart:Uint4B以上具体理论部分可以看下intel的v3.SystemProgrammingGuide。上面有这两种分页方式的介绍。非PAE分页,理论部分,看图,分4K和4M两种页。
4、下面是ida看到的ntoskrnl.exe中导出的MmIsAddressValid。.text:0040C661;BOOLEAN_stdcallMmIsAddressValid(PVOIDVirtualAddress).text:0040C661publicMmIsAddressValid.text:0040C661MmIsAddressValidprocnear;CODEXREF:sub_40D65E+Cp.text:0040C661;sub_415459:loc_415470p.text:0040C661.text:0040C661VirtualAddress=dwordptr8.text
5、:0040C661.text:0040C661;FUNCTIONCHUNKAT.text:0041B84ESIZE00000007BYTES.text:0040C661;FUNCTIONCHUNKAT.text:0044A4F2SIZE00000019BYTES.text:0040C661.text:0040C661movedi,edi.text:0040C663pushebp.text:0040C664movebp,esp.text:0040C666movecx,ebp+VirtualAddress.text:0040C669moveax,ecx.text:0040C66Bshreax,14
6、h;右移20位.text:0040C66Emovedx,0FFCh;取高10位.text:0040C673andeax,edx.text:0040C675subeax,3FD00000h;加上0xc0300000.text:0040C675;PDE=(VA22)12)22)12)22)12)uMmIsAddressValidl50nt!MmIsAddressValid:80510fa08bffmovedi,edi80510fa255pushebp80510fa38becmovebp,esp80510fa551pushecx;申请空间EBP-480510fa651pushecx;申请空间EBP-880510fa78b4d08movecx,dwordptrebp+8;取参数,虚拟地址80510faa56pushesi80510fab8bc1moveax,ecx80510fadc1e812shreax,12h;右移12H(18位,相当于213),即线性地址高11位(32-21)代表页目录索引,而页目录中每;个索引占8个字节,故该索引在页目录中的相对偏移位置是页目录索引*8,也就是1212)21)12)3)&0x7FFFF8+0xC0000000;PTEContext=(ULONG)*(PVOID)PTE;if(!(PTEContext&P
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1