【求助】关于XP 4G补丁打开/3GB后寻址地址再次被限制在3G内全局程序内存使用申请被限制。
由于无法联系原作者和维护更新作者,第3方外部更新作者联系后说需要原作者帮助才可以。所以来这里求助高手。
请暂时无视DX10.0的补丁谢谢,入口文件 MSVCRT.DLL 的 _EXCEPT_HANDLER4_COMMON 是NT6.X的 API入口没有人弄。
图
————————————————————————————————————————
本文函数是XPSP3 更新到最新版本后的谢谢,请各位高手更新系统到最新版本后在逆向工厂。
我本人英语不过关所以难以完成自己去弄,永远菜鸟。
————————————————————————————————————————
系统环境如下
电脑型号 X86 兼容 台式电脑
操作系统 Windows XP 专业版 32位 SP3 ( DirectX 10.0 )
处理器 英特尔 Xeon E3-1230 V2 @ 3.30GHz
主板 华硕 P8Z77-V LK (英特尔 Ivy Bridge - Z77 Express 芯片组)
内存 8 GB ( 三星 DDR3L 1600MHz )
主硬盘 西数 WDC WD1600AAJS-00PSA0 ( 160 GB / 7200 转/分 )
显卡 Nvidia GeForce GTX 660 ( 2 GB / 微星 )
显示器 三星 SAM07DC SMS22A330BW ( 22 英寸 )
声卡 瑞昱 ALC892 @ 英特尔 Panther Point High Definition Audio Controller
网卡 瑞昱 RTL8168F PCI-E Gigabit Ethernet NIC / 华硕
---------------------------------------------------------------------------------------------------------
这个很多人认为XP 3GB无法生效认为显卡驱动问题,其实是可以生效的集成和新版本N卡驱动器都可以A卡也可以不过估计需要很新版本吧(无法一个一个试试),现在我成功打开啦函数如下:
打开单进程 限制开关
第一个如下
timeout=1
default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP 64G-8G" /kernel=ntkl64g.exe /hal=hal64g.dll /fastdetect /PAE /3GB
/Userva=2950
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP 64G" /kernel=ntkl64g.exe /hal=hal64g.dll /fastdetect /PAE
/NOEXECUTE=optin
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional PAE" /PAE /noexecute=optin /fastdetect
第2个
timeout=1
default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP 64G-8G" /kernel=ntkl64g.exe /hal=hal64g.dll /fastdetect /PAE /3GB
/Userva=2900
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP 64G" /kernel=ntkl64g.exe /hal=hal64g.dll /fastdetect /PAE
/NOEXECUTE=optin
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional PAE" /PAE /noexecute=optin /fastdetect
关于这个函数/Userva=
------------------------------------------------------------------------------------
下图来着与外部程序员会话时截图。Photoshop可以单线程占用大小
图
开启前
图
开启后
大家已经看到/Userva= (微软限制 3072-2900 一般只能开2900)函数这个是最新函数只要开启就能分配2.7GB给程序,但是视乎XP的3GB开关寻址与WIN7
的3GB开关(bcdedit /set IncreaseUserVa 3072 这个函数也被限制在 3GB内 微软开启绝对破产)有一定区别,因为XP打开3GB后全部程序全局被限制申
请使用内存在固定地址表内
这个表是预置的(固定分配),但是WIN7是高效随机安排与生成剩余内存地址表(动态随机),这样以来(XP)程序永远无法获得高于3G内存以外的内存
就算打开已经破解后的内存限制依然无法分配以上空间,而且程序间会互相挤压使用空间,例如你打开foobar2000听歌 缓冲长度30000纳秒,如果打开其
他占用内存一半(相等于3GB一半)后,如果重新读取另外一个歌曲就会报错无法读取系统缓冲(不是内存不能),当然这样是随机申请所以问题不大,
也看不出问题,但是如果你启动这个占用一半内存的程序后在启动其他需要固定使用一定内存程序会马上内存不能一个或者多个现在启动的程序,内存冲
突你可以在任务管理器中看到 才到 非常接近2.9GB就报错大部分程序啦。这样就可以看到现在我们无法使用超过2.9GB内存(因为USERVA=2900-2980 可
以正常启动到桌面).
相等于内存的主寻址表打开到最大,核心引导程序其他函数也在限制你使用内存,可见32位程序使用大内存不是不可能,只是人为限制和XP产生前部分硬
件Z68之前(无法一个一个测试)不支持问题。但是为什么WIN7同样打开3GB开任何程序都能使用到2.8GB内存呢而且不挤压其他程序运行和占用,我打开
WIN7内存补丁和3GB限制后 开2-3个占用2.2-2.7程序完全没有问题,而且效果提升非常明显没有之前占用但多个单程序占用内存时的顿卡问题(可见开多
个程序占内存不切实际也消耗CPU性能,当然卡请不要用 memtest 和 MemTest_Pro 因为他们2个代码里有主动限制。用其他程序使用多少用多少的去试试
)。
这样一来WIN7 32位可以完全单进程使用完内存(那个去破解下 IncreaseUserVa 3072限制即可 填写 999999也可以 系统会自动跳回3072)。
现在根据2个系统症状可以看出,XP 和 WIN7 内存分配方式的区别啦。XP下程序会互相挤压使用空间,WIN7只要内存还有就不会挤压使用空间。
总结
WIN7 3GB 开关使用的内存分配是 函数变量 (根据物理内存变动)的
XP 3GB 开关使用固定预置内存分配 函数 (内存再大也无效)的
显卡驱动器被XP 内存分配方式错误造成错误蓝屏内存不能(集成显卡无事 N卡驱动最新版版本兼容3GB 外地址开关)
————————————————————————————————————————
现在如果可以请求各位高手在现在破解的基础上弄3GB开关,但是注意XP3GB开关不是/3GB而是 /Userva= 这个命令(突破口)。只要把XP 预置的内存表改成变量内存表即可(改变分配的函数代码)。
现在的破解已经非常完美啦 我的电脑连续运行1年半(之前是775平台去年12月换1155平台)都使用这个补丁的第2版11年,最近更新到12年的第3版,帮同事家人的机子使用这个破解都没有事连USB问题都没有(多是12年3月后的新机子),希望各位放开手脚吧。
——————————————————————————————————————————
至此谢谢各位~