天下网吧 >> 网吧天地 >> 网吧技术 >> 网吧软件 >> 正文

谁限制了4GB内存 32位Vista大内存实战

2009-6-12IT168评测中心佚名

统跳转到default代码段,不允许使用超过4GB容量内存,通过简单的修改就可以让系统认为ZwQueryLicenseValue返回128GB的可用容量:

 

Opcode Bytes Instruction
B8 00 00 02 00 
mov     eax,00020000h 
90 
nop 
90 
nop 

 

  nop是空操作的意思(no operation),20000h就代表着128GB(16进制值)。

  以下是上述指令在英文版本Vista上的位置:

 

Version
版本号 Package
版本 File Offsets
文件偏移量 6.0.6000.16386 Windows Vista 0x003040B1, 0x003040F2 6.0.6001.18000 Windows Vista SP1 0x00309AA3, 0x00309AE4

 

为了安全 href="http://safe.it168.com/" target=_blank>安全,一般建议,修改后的内核文件名为NTKR128G.EXE.

  温馨提示:修改核心文件具有风险,此文仅用于研究用途。      虽然知道原理之后还有很多操作,如,数字签名等操作,不过这些都是为人熟知,因此已经有不少的补丁实现了该大内存支持修改理论,有一个国内的圣贤实现的版本:

 


如图,请自行思考如何获得该软件

 


简单地按下“应用”按钮

 


一个新的核心文件就出炉了

 


该补丁还提供了一个自动修改启动选项以应用NTKR128G.EXE的命令行批处理文件

 


自行进行修改
为了安全,这个补丁默认启动正常的核心文件,需要手动选择加入的新选项才能使用NTKR128G.EXE启动  以下为可选命令:

启动菜单10秒选择时间:
bcdedit -timeout 10

将指定的GUID代表的启动选项设置为第一项,GUID可以通过bcdedit命令显示出来(resumeobject):
bcdedit -displayorder GUID -addfirst

修改默认启动为GUID代表的启动选项
bcdedit -default GUID


6GB容量    成功之后,系统将可以应用超过4GB以上的内存
    虽然经过修改,已经解决了大内存支持的问题,然而,在32位环境无法解决的是,进程的地址空间的问题。因为架构的原因,现代的普通32bit操作系统上,每一个用户模式的应用程序可以寻址的通常只有2GB(有一个选项可以让其增大为3GB)。提供多于4GB容量的内存,每一个用户模式的应用程序可以寻址的容量仍然没有改变——尽管不同的应用程序都具有互相独立的的2GB寻址空间可以让大内存电脑同时运行多个不同的程序。
通常,64位的应用程序才可以使用超过2GB的内存;64位应用程序的寻址空间是4TB  
图中部的Virtual Size显示了一个程序使用的地址空间,Working Set则是其所有占用的内存(包括映射的系统文件),Private Bytes则是完全由程序自己占用的私有内存     通常的应用程序就受到了这个限制,例如,在使用如Maxthon这样的多页面浏览器打开70个图片页面的时候,程序的寻址空间就已经到达2GB了,这时虽然其工作集并不大,然而程序已经无法寻址更多的内存;继续打开新的页面只会让Maxthon崩溃。     为了让程序突破2GB寻址的限制,近代Windows NT核心提供了一个变通的方案4GB内存调整优化技术,通过这个技术,可以将用户模式的寻址空间扩大至3GB,这样核心寻址空间便被限制为1GB了,需要超大内存容量的应用程序可以从这个特性中获得性能改善,如SQL Server数据库这种类型。要使用这个4GB内存优化技术,用户需要在Windows Server操作系统的启动参数中加入/3GB开关。这个特性同时需要操作系统打开DEP(数据执行保护,其实/3GB开关需要的是PAE的支持)。 9 7 3 1 2 3 4 4 8 :

本文来源:IT168评测中心 作者:佚名

声明
声明:本站所发表的文章、评论及图片仅代表作者本人观点,与本站立场无关。文章是出于传递更多信息之目的。若有来源标注错误或侵犯了您的合法权益,请作者持权属证明与本网联系,我们将及时更正、删除,谢谢。 Email:support@txwb.com,系统开号,技术支持,服务联系微信:_WX_1_本站所有有注明来源为天下网吧或天下网吧论坛的原创作品,各位转载时请注明来源链接!
天下网吧·网吧天下
  • 本周热门
  • 本月热门
  • 阅读排行