xp sp3关闭PAE(物理内存扩展)
来源:互联网 发布:mc96f6432编程手册 编辑:程序博客网 时间:2024/05/17 03:53
这几天调试系统PTE区域,在获取nt!MmFirstFreeSystemPte指向的元素时,总无法获得正确的空闲pte值。反汇编nt!MiInitializeSystemPtes函数时发现这样的代码:
80544e35 8d3cf5c0975580 lea edi,nt!MmFirstFreeSystemPte (805597c0)[esi*8]80544e3c 8b5704 mov edx,dword ptr [edi+4]80544e3f 8845ff mov byte ptr [ebp-1],al80544e42 8b07 mov eax,dword ptr [edi]80544e44 b120 mov cl,20h80544e46 897df8 mov dword ptr [ebp-8],edi80544e49 e8121fffff call nt!_aullshr (80536d60)80544e4e 83f8ff cmp eax,0FFFFFFFFh80544e51 7530 jne nt!MiReserveAlignedSystemPtes+0x7d (80544e83)nt!MmFirstFreeSystemPte是个MMPTE数组,sizeof(MMPTE)==4才对,怎么代码中会用到:
80544e35 8d3cf5c0975580 lea edi,nt!MmFirstFreeSystemPte (805597c0)[esi*8] ;每个元素占用8字节查看了wrk1.2的源码,发现在开启PAE的情况下MMPTE会占用8B:
#if !defined (_X86PAE_) //未开启PAEtypedef HARDWARE_PTE_X86 HARDWARE_PTE;typedef PHARDWARE_PTE_X86 PHARDWARE_PTE;#else //开启PAEtypedef HARDWARE_PTE_X86PAE HARDWARE_PTE;typedef PHARDWARE_PTE_X86PAE PHARDWARE_PTE;#endif
typedef struct _HARDWARE_PTE_X86PAE { union { struct {... }; struct { ULONG LowPart; ULONG HighPart; }; }; //union结构中定义了2个ULONG,整个结构至少8字节} HARDWARE_PTE_X86PAE, *PHARDWARE_PTE_X86PAE;由此,我猜测我调试用的xp sp3开启了PAE模式,来找找系统信息作为佐证:
系统属性和windbg的信息无不证明这个xp系统运行在PAE模式下。
那么接下来要做的就是关闭PAE模式,网上搜索了一圈(容我吐槽一下baidu,真是什么都没找到,最后实在bing上找到的解决办法)发现只要修改c:\Boot.ini属性并添加以下参数: /noexecute=alwaysoff /NOPAE即可(这么做同时会关闭系统DEP功能,反正我是调试用,无所谓)
[boot loader]timeout=30default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS[operating systems]multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /noexecute=optin /fastdetectmulti(0)disk(0)rdisk(0)partition(1)\WINDOWS="Debug" /noexecute=alwaysoff /NOPAE /debug /debugport=COM1: /baudrate=115200保存并重启后成功关闭了PAE模式:
此时,系统属性中已经没有"物理内存扩展"这样的字眼,另外windbg也显示当前用的nt模块指向ntoskrnl.exe。PAE成功关闭~
0 0
- xp sp3关闭PAE(物理内存扩展)
- 【转】Win XP Pro sp3 32bit 启用PAE 使用4GB内存
- 物理地址扩展 (PAE) 和应用程序内存调整
- PAE物理地址扩展怎么开启?XP系统PAE的开启方法
- PAE(物理地址扩展)开启与关闭的方法
- XP SP3
- xp -sp3
- 内存管理:物理地址扩展(PAE)分页机制
- Linux内核-内存管理-PAE(物理地址扩展)
- 物理地址扩展 (PAE) 概述
- 物理地址扩展 (PAE)
- 物理地址扩展(PAE)概述
- 物理地址扩展 (PAE)
- PAE(物理地址扩展)
- linux物理地址扩展PAE
- 32bit OS访问64GB物理内存——PAE技术
- 使用WinDBG观察分页机制 ---- 实验前提(关闭PAE(物理地址扩展))
- 解析Winndows 2000/XP物理内存管理
- 自己不优秀,认识谁都没用
- 在ubuntu下pyenv管理python的多个版本
- Python学习笔记03_条件判断和循环
- 38-2-1
- .NET框架-WinForm房贷分析器
- xp sp3关闭PAE(物理内存扩展)
- git | git 重新认证
- sql面试题(学生表_课程表_成绩表_教师表)
- 注解(Annotation)自定义注解入门
- DGPS RTK
- 内存对齐
- javascript最佳实践
- Leveldb 实现原理(转)
- LintCode 18-带重复元素的子集 JAVA