注意:改完后会打开某些应用程序会蓝屏,而且是确定的发生,不是偶然,应该是应用程序也用到内核里面这段函数来获取内存限制的,所以呢,估计还是有一点问题。。。
昨天装了vista,听别人说是可以支持4G内存的,但是我自己怎么都弄不出来,PAE在开了DEP数据保护模式之下是默认开了的,也能认得出4G内存,但是能用的只有3.5G,最后网上找到一篇文章,一个牛人研究windows内核,发现是Windows许可证做的限制,如果把许可证换成windows 2008的就直接可以支持128G了,但是系统会有兼容性问题,所以牛人就自己修改内核,把从许可证里面获取内存限制的汇编代码改了一下。。。
原文如下:
http://www.geoffchappell.com/viewer.htm?doc=notes/windows/license/memory.htm
C:\Windows\system32\ntkrnlpe.exe
汇编:
Opcode Bytes |
Instruction |
7C xx
|
jl default
|
8B 45 FC
|
mov eax,dword ptr [ebp-4]
|
85 C0
|
test eax,eax
|
74 yy
|
je default
|
改成
Opcode Bytes |
Instruction |
B8 00 00 02 00
|
mov eax,00020000h
|
90
|
nop
|
90
|
nop
|
即可。。。
个人试验了一次,果然可行,具体步骤如下:
1、首先复制系统内核文件 ntkrnlpa.exe,并命名为 ntkrn128.exe,所有修改都在ntkrn128.exe上面进行,不要动原来的内核
2、用16进制编辑器(我用的是ultraedit)查找特征码:
特征串1:7C 11 8B 45 FC 85 C0 74 0a
特征串2:7C 10 8B 45 FC 85 C0 74 09
每一个特征串都是唯一的,你只会找到一个。
然后就是修改,把 后面七个字节全部改为 B8 00 00 02 00 90 90
也就是:
特征串1:7C 11 8B 45 FC 85 C0 74 0a 改为 7C 11 B8 00 00 02 00 90 90
特征串2:7C 10 8B 45 FC 85 C0 74 09 改为 7C 10 B8 00 00 02 00 90 90
然后保存文件,退出编辑器。
3、改了内核文件,就需要重新生成md5验证码,某则不能启动的,用editbin,visual stuido 有,也可以从最下面提供的下载包里面获取。
editbin /release C:\windows\system32\ntkrn128.exe
4、对内核文件进行签名,这两个工具在 Windows Software Development Kit (SDK) and the Windows Driver Kit (WDK) 都有,也可以从下面的下载包里面获取。
makecert -r -ss my -n “CN=My Own Testing Authority”
signtool sign -s my -n “My Own Testing Authority” C:\windows\system32\ntkrn128.exe
5、增加启动项,由于vista不能直接修改boot.ini,只能用bcdedit来修改了
把当前启动项拷贝一份新的:
bcdedit /copy {current} /d “Windows Vista 128G”
获得新启动项的guid
直接敲 bcdedit
….
Windows 启动加载器
——————-
标识符 {24914868-264b-11de-a6f3-001aa0c54a80}
device partition=C:
path \Windows\system32\winload.exe
description Windows Vista 128G
….
这样就找到标识符guid {24914868-264b-11de-a6f3-001aa0c54a80},每个系统的都是不同的,一定要用自己看到的。
强制打开pae
bcdedit /set {guid} pae ForceEnable
指定内核
bcdedit /set {guid} kernel ntkrn128.exe
打开测试签名:
bcdedit /set {guid} testsigning on
ok,搞定,这样子启动的时候就多了一个选项
Windows Vista 128G
选择以后启动,桌面显示测试模式,因为我们没有windows的签名,忍一下吧,嘿嘿。
到此我的4G内存全部用上了,而windows 6 最高支持128G内存,应该也是ok滴,哈哈。
不过用了这个修改版的内核,会有一些奇奇怪怪的蓝屏问题,估计是还有某些地方会检查所致吧。或者是我的rpwt。。。
修改内核用到的工具:
KernelTool.zip