小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

patch一個字節(jié), WINXP32 支持>=4GB

 看見就非常 2012-07-23
作者: univert    時間: 2010-10-7 22:05:54     標(biāo)題: patch一個字節(jié), WINXP32 支持>=4GB

之前有人分析了Vista/win7 的memory limit http://www./viewer.htm?doc=notes/windows/license/memory.htm
現(xiàn)在來看看winxp啊,其實是一樣的啊
反編譯結(jié)果有一個private的函數(shù)(symbol里面沒有)來進(jìn)行check的,IDA Pro 里可以空過xref ExVerifySuite來定位這個匿名函數(shù),函數(shù)的源代碼在這里,不過那個好像是DataCenter的源代碼,XP的源代碼略有差異,不過大同小異
這個函數(shù)在MmInitSystem里面被調(diào)用,用來刪除系統(tǒng)超過4Gb的那些頁面

這里有兩個限制值,一個是MaxPages也就是物理頁面總數(shù),一個是HighestPhysicalAddress是最高頁面地址值
winxp32默認(rèn)這兩個值都是0x100000,也就是4G,但是由于部分物理頁面的地址由于bios Memory remap而存在>4G的空間,HighestPhysicalAddress限制了這部分地址空間,所以有4Gb的機(jī)子只有大概3-3.25G的實際空間


INIT:005BB492 MiCheckPaeLicense proc near      
INIT:005BB492
INIT:005BB492 var_C           = dword ptr -0Ch
INIT:005BB492 HighestPhysicalAddress= dword ptr -8
INIT:005BB492 MaxPages        = dword ptr -4
INIT:005BB492
INIT:005BB492                 mov     edi, edi
INIT:005BB494                 push    ebp
INIT:005BB495                 mov     ebp, esp
INIT:005BB497                 sub     esp, 0Ch
INIT:005BB49A                 push    ebx
INIT:005BB49B                 push    esi
INIT:005BB49C                 push    edi
INIT:005BB49D                 mov     ebx, 100000h      默認(rèn)是4GB
INIT:005BB4A2                 xor     edi, edi
INIT:005BB4A4                 push    7               ; SuiteType   檢查是否DataCenter
INIT:005BB4A6                 mov     esi, eax
INIT:005BB4A8                 mov     [ebp+MaxPages], ebx
INIT:005BB4AB                 mov     [ebp+HighestPhysicalAddress], edi  HighestPhysicalAddress初始為0即沒有限制,DataCenter下該值為零
INIT:005BB4AE                 call    _ExVerifySuite@4 ; ExVerifySuite(x)
INIT:005BB4B3                 cmp     al, 1                    改這里就可以啦 cmp al,0
INIT:005BB4B5                 jnz     short loc_5BB4D2
INIT:005BB4B7                 cmp     [esi+64h], edi       檢查是否打開/3GB
INIT:005BB4BA                 jnz     short loc_5BB4C5
INIT:005BB4BC                 mov     [ebp+MaxPages], 1000000h   DataCenter是64GB
INIT:005BB4C3                 jmp     short loc_5BB509
INIT:005BB4C5 ; ---------------------------------------------------------------------------
INIT:005BB4C5
INIT:005BB4C5 loc_5BB4C5:                             ; CODE XREF: MiCheckPaeLicense+28j
INIT:005BB4C5                 mov     eax, 400000h
INIT:005BB4CA                 mov     [ebp+MaxPages], eax
INIT:005BB4CD                 mov     [ebp+HighestPhysicalAddress], eax
INIT:005BB4D0                 jmp     short loc_5BB509
INIT:005BB4D2 ; ---------------------------------------------------------------------------
INIT:005BB4D2
INIT:005BB4D2 loc_5BB4D2:                             ; CODE XREF: MiCheckPaeLicense+23j
INIT:005BB4D2                 cmp     ds:_MmProductType, 690057h
INIT:005BB4DC                 jz      short loc_5BB4F2
INIT:005BB4DE                 push    1               ; SuiteType
INIT:005BB4E0                 call    _ExVerifySuite@4 ; ExVerifySuite(x)
INIT:005BB4E5                 cmp     al, 1
INIT:005BB4E7                 jnz     short loc_5BB4F2
INIT:005BB4E9                 mov     [ebp+MaxPages], 800000h
INIT:005BB4F0                 jmp     short loc_5BB509
INIT:005BB4F2 ; ---------------------------------------------------------------------------
INIT:005BB4F2
INIT:005BB4F2 loc_5BB4F2:                             ; CODE XREF: MiCheckPaeLicense+4a
INIT:005BB4F2                                         ; MiCheckPaeLicense+55
INIT:005BB4F2                 push    0Ah             ; SuiteType
INIT:005BB4F4                 call    _ExVerifySuite@4 ; ExVerifySuite(x)
INIT:005BB4F9                 cmp     al, 1
INIT:005BB4FB                 jnz     short loc_5BB506
INIT:005BB4FD                 mov     [ebp+MaxPages], 80000h
INIT:005BB504                 jmp     short loc_5BB509
INIT:005BB506 ; ---------------------------------------------------------------------------
INIT:005BB506
INIT:005BB506 loc_5BB506:                             ; CODE XREF: MiCheckPaeLicense+69j
INIT:005BB506                 mov     [ebp+HighestPhysicalAddress], ebx  XP下0x100000
INIT:005BB509
INIT:005BB509 loc_5BB509:                             ; CODE XREF: MiCheckPaeLicense+31j
INIT:005BB509                                         ; MiCheckPaeLicense+3Ej ...
INIT:005BB509                 add     esi, 8
INIT:005BB50C                 mov     eax, [esi]
INIT:005BB50E                 xor     ebx, ebx
INIT:005BB510                 cmp     eax, esi
INIT:005BB512                 mov     [ebp+var_C], esi
INIT:005BB515                 jz      short loc_5BB583


[attach]3198[/attach]
作者: Mancity    時間: 2010-10-7 22:15:22

“支持>=4GB”的意思是等于4G還是大于等于4G?
作者: univert    時間: 2010-10-7 22:16:33

引用第1樓Mancity于2010-10-07 19:15發(fā)表的  :
“支持>=4GB”的意思是等于4G還是大于等于4G?
大于等于啊,我這里沒有>4G的機(jī)器,所以沒辦法測試,不過應(yīng)該是一樣的啊,呵呵
作者: Mancity    時間: 2010-10-7 22:20:59

2^32=4 294 967 296 =4G
32位CPU的尋址極限能突破?
好像在《Windows驅(qū)動開發(fā)技術(shù)詳解》看到過詳細(xì)的解釋,32位系統(tǒng)所能用的物理內(nèi)存極限應(yīng)該只能到4G
作者: univert    時間: 2010-10-7 22:23:52

引用第3樓Mancity于2010-10-07 19:20發(fā)表的  :
2^32=4 294 967 296 =4G
32位CPU的尋址極限能突破?

希望你先看看這里http://www./viewer.htm?doc=notes/windows/license/memory.htm了解一下背景,呵呵
作者: Mancity    時間: 2010-10-7 22:28:20

That 32-bit editions of Windows Vista are limited to 4GB is not because of any technical constraint on 32-bit operating systems. The 32-bit editions of Windows Vista all contain code for using physical memory above 4GB. Microsoft just doesn’t license you to use that code.
好奇怪。。
作者: killvxk    時間: 2010-10-7 22:47:55

確實可行~
作者: univert    時間: 2010-10-7 22:54:15

用Vmware 測試8GB,XPSP2效果
[attach]3199[/attach]
作者: achillis    時間: 2010-10-7 23:00:05

8GB,很威猛~~
作者: Mancity    時間: 2010-10-7 23:01:07

強(qiáng)大,這個時候CPU還是運(yùn)行在x86吧
作者: univert    時間: 2010-10-7 23:12:50

引用第9樓Mancity于2010-10-07 20:01發(fā)表的  :
強(qiáng)大,這個時候CPU還是運(yùn)行在x86吧
當(dāng)然的啊,這個方法可以做多支持到64GB的物理地址
作者: Mancity    時間: 2010-10-8 01:31:01

http://baike.baidu.com/view/493711.htm
原來是這個,那書上都沒提到PAE……
作者: Mancity    時間: 2010-10-8 01:36:50

不支持PAE的處理器這個方法應(yīng)該無效。
作者: killvxk    時間: 2010-10-8 02:26:49

弄真機(jī)實驗吧
作者: Mancity    時間: 2010-10-8 03:53:49

發(fā)現(xiàn)一個問題,單進(jìn)程還是不能超過2GB,囧。。
作者: Mancity    時間: 2010-10-8 04:04:57

實機(jī)上測試還發(fā)現(xiàn)有好多驅(qū)動不能正常工作在啟用了PAE的內(nèi)核下
作者: jerrynpc    時間: 2010-10-8 11:36:49

windbg無法查到此函數(shù)?
作者: achillis    時間: 2010-10-8 15:21:17

引用第16樓jerrynpc于2010-10-08 08:36發(fā)表的  :
windbg無法查到此函數(shù)?


私有符號,Windbg是看不到的,按樓主說的方法找吧~
作者: rickywong    時間: 2010-10-10 12:45:51

實用性不大,和4M內(nèi)存粒度一樣,很多驅(qū)動都不支持
作者: perfectdark    時間: 2010-10-10 17:14:24

兼容性如何,以前我改過,但是藍(lán)屏了,不知道是否是我改錯了,
還是驅(qū)動不兼容
作者: perfectdark    時間: 2010-10-10 18:48:44

又改了一次,還是藍(lán)屏了
作者: wg2001wg    時間: 2010-10-10 21:39:08

確定不是ps上的??
作者: univert    時間: 2010-10-11 16:43:27

可以用的啊,我的4G機(jī)子已經(jīng)跑了3天了,沒問題
有些驅(qū)動確實有問題,聲明物理內(nèi)存變量的時候沒有用PHYSICAL_ADDRESS 宏,而是自己用int . long
如果該物理內(nèi)存地址>4G的話就會出問題了,PHYSICAL_ADDRESS 其實是__int64
作者: youxyo    時間: 2010-10-13 02:03:48

用過。。偶爾藍(lán)屏。。。偶爾啟動不了

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多