首页 > 系统相关 >xp sp3关闭PAE(物理内存扩展)

xp sp3关闭PAE(物理内存扩展)

时间:2022-11-07 21:39:41浏览次数:58  
标签:PHARDWARE PTE sp3 HARDWARE PAE X86PAE xp nt


    这几天调试系统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],al
80544e42 8b07 mov eax,dword ptr [edi]
80544e44 b120 mov cl,20h
80544e46 897df8 mov dword ptr [ebp-8],edi
80544e49 e8121fffff call nt!_aullshr (80536d60)
80544e4e 83f8ff cmp eax,0FFFFFFFFh
80544e51 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_) //未开启PAE
typedef HARDWARE_PTE_X86 HARDWARE_PTE;
typedef PHARDWARE_PTE_X86 PHARDWARE_PTE;
#else //开启PAE
typedef 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模式,来找找系统信息作为佐证:

xp sp3关闭PAE(物理内存扩展)_系统属性

系统属性和windbg的信息无不证明这个xp系统运行在PAE模式下。

     那么接下来要做的就是关闭PAE模式,网上搜索了一圈(容我吐槽一下baidu,真是什么都没找到,最后实在bing上找到的解决办法)发现只要修改c:\Boot.ini属性并添加以下参数:  /noexecute=alwaysoff /NOPAE即可(这么做同时会关闭系统DEP功能,反正我是调试用,无所谓)

[boot loader]
timeout=30
default=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 /fastdetect
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Debug" /noexecute=alwaysoff /NOPAE /debug /debugport=COM1: /baudrate=115200

保存并重启后成功关闭了PAE模式:

xp sp3关闭PAE(物理内存扩展)_windows_02

此时,系统属性中已经没有"物理内存扩展"这样的字眼,另外windbg也显示当前用的nt模块指向ntoskrnl.exe。PAE成功关闭~

    

标签:PHARDWARE,PTE,sp3,HARDWARE,PAE,X86PAE,xp,nt
From: https://blog.51cto.com/u_13927568/5831380

相关文章

  • windbg调试窗口过程WindowProc(winxp 32bit)
      ollydbg在调试窗口程序方面做得很便捷,虽然windbg在这方面不如od,但通过命令的组合也能达到类似的效果。我借winxp的calc.exe为例来谈谈如何用windbg调试窗口过程。 ......
  • xp下GetLastError实现
      大家对这个win32API一定很熟悉了,那就来看下他的实现:0:001>x*!GetLastError//搜索符号地址7c830759kernel32!GetLastError=<notypeinformation>0:001>uf7......
  • 数据解析:bs4与xpath
    数据解析原理概述:-解析的局部的文本内容都会在标签之间或者标签对应的属性中进行存储-1.进行指定标签的定位-2.标签或者标签对应的属性中存储的数据值进......
  • android-Service_Intent_must_be_explicit的解决方法
    android:ServiceIntentmustbeexplicit的解决方法在使用AIDL隐式开启一个服务的时候,可能会遇到这个错误IllegalArgumentException:ServiceIntentmustbeexplici......
  • 项目报错类型:Invalid prop: type check failed for prop "index". Expected String wi
    vue项目中出现可一个小报错问题:Invalidprop:typecheckfailedforprop"index".ExpectedStringwithvalue"125",gotNumberwithvalue125.在elementUI导航......
  • postman发送post请求给本地express 一直sending request
    //catch404andforwardtoerrorhandlerapp.use(function(req,res,next){next(createError(404));});//统一处理错误//之前的所有路由中调用next(err),......
  • Xpath用法及其常用函数
    目录XPath简介XPath语法选取节点谓语(Predicates)选取未知节点选取若干路径XPath轴XPATH的几个常用函数XPath简介XPath(XMLPathLanguage)是一门在HTML\XML文档中查找信息......
  • 游戏修改-Against the Storm - Experimental
    FileName=..\AgainsttheStorm-Experimental_Data\Managed\Assembly-CSharp.dllPathList\0000\Descrip=CornerstonesService__RerollPathList\0000\NewHex=7B85......
  • Esp32 Mqtt
    使用esp32连接MQTT服务器使用Arduino库PubSubClient.h修改PubSubClient.h文件基本初始化引入头文件#include"PubSubClient.h"constchar*ssid="XXXX";......
  • expr包的使用
    expr_basic_testpackageexpr_practiceimport("errors""fmt""github.com/antonmedv/expr""testing""time")//https://github.com/anton......