利用Windows XP Service Pack 2 Checked Build打造Partial Checked Build System

一、什麼是Checked build
    Windows Checked Build通俗地說就是Debug版的Windows,與之相對的是Retail build,一般我們在市面上買到的Windows都是Retail build。兩者的code base相同,只不過Checked build是在DBG編譯開關打開的情況下編譯出來的。和Retail build相比,Checked build關閉了編譯器優化(這樣使得反彙編的彙編代碼更符合源代碼的流程,更容易跟蹤和理解源代碼的思路)、保留了爲了方便調試而添加的檢查和輸出語句,同時對代碼有更加嚴格的檢查,具體包括:

►函數參數合法性檢查;
►對關鍵算法和內部數據結構的正確性的檢查;
►信息(指經常記錄於Microsoft知識庫文章中的信息)的檢查和跟蹤輸出

配合Checked build版的Windows Symbol Package,可以非常方便地對Windows內核和驅動程序進行跟蹤調試,實乃居家旅行殺人越貨必備之佳品,要是再配上Windows Research Kernel,可以說整個Windows的內核源代碼已經在你手裏了。

二、如何得到Windows Checked Build
   非常不幸,Checked build只隨MSDN Professional和Universal發佈,MSDN Universal的訂購價格那可是不菲滴……窮人買不起(提示:你可以努力回答問題賺分評上MVP之後讓老比送你一套,不過這個對我而言比直接花錢去買還要遙遠,sorry扯遠了……)不過,所幸沒有必要安裝整個Windows checked build(原因有兩個:其一,因爲關閉了編譯優化,這個版本的windows跑起來巨慢無比,令人無法忍受,我有幸在公司裏裝過,P4 1.7G,512M DDR,光打開“我的電腦”就要花上半分鐘!@#$^&*()——是自虐狂的當我沒說;第二,,調試驅動的時候,往往只涉及到一部分的OS組件,沒有必要把整個系統都換掉;其三,獨立安裝Windows Checked Build需要單獨分區,還要弄雙啓動,麻煩不是一點點),我們可以利用Windows XP Service Pack 2 Checked Build(這玩意兒是可以免費下載的)來替換掉kernel和hal,得到一個準Checked build系統(注意:如果你的xp沒有安裝sp2,請先升級到sp2,我們只替換系統的一部分組件,一定要版本相配才行,否則搞壞了系統不要怪我嘿嘿)。Windows XP Service Pack 2 Checked Build Network Installation Package在這裏下載:http://www.microsoft.com/downloads/details.aspx?FamilyID=7a4d8d12-9f5d-42bb-b31c-7b31657c869c&DisplayLang=en(友情提示,最好只打sp2,關閉自動更新,不要安裝其他的補丁,定期發佈的小補丁微軟並不提供checked build版本,Windows XP Service Pack 2 Checked Build裏提供的kernel和hal的版本是5.1.2600.2180,在動手之前,先去system32目錄下檢查一下當前系統ntoskrnl.exe、ntkrnlpa.exe和hal.dll的版本,能相配是最好不過了,可以保證最大程度的穩定性。不過我發現小版本號不同也沒關係,只要大版本號5.1.2600相同即可。)

三、操作步驟
1.打開%SystemRoot%/repair/setup.log,找到如下三行:
[Files.WinNt]
...
/WINDOWS/system32/hal.dll = "halaacpi.dll","2cfd1"
/WINDOWS/system32/ntkrnlpa.exe = "ntkrnlpa.exe","1f6612"
/WINDOWS/system32/ntoskrnl.exe = "ntoskrnl.exe","220d8c"
...
記下等號右邊的文件名,這是在安裝光盤上的原始文件名.

2. 解壓縮XP SP2 Checked Build,從中找到halaacpi.dl_,ntkrnlpa.ex_,ntoskrnl.ex_三個文件.用expand命令解開:
expand halaacpi.dl_ halaacpi.chk
expand ntkrnlpa.ex_ ntkrnlpa.chk
expand ntoskrnl.ex_ ntoskrnl.chk
將這三個文件拷入system32目錄下。不要把原來的文件給覆蓋了!!!切記切記!!!

3. 編輯boot.ini文件,加入啓動選項:
[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 Free Build" /Execute /fastdetect /noguiboot
multi(0)disk(0)rdisk(0)partition(1)/WINDOWS="Microsoft Windows XP Professional Checked Build" /Execute /fastdetect /noguiboot /kernel=ntoskrnl.chk /hal=halaacpi.chk

4. 重啓動,默唸上帝或者其他你信的神仙的名號,祈禱自己rp夠好。一般來說都沒問題的,實在跑不起來請反省自己的rp。

四、備註
    使用SoftICE或者WinDBG的,下載checked build版的windows symbol package,把這三個文件的pdb文件弄出來填進去就可以了。 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章