最近買了一本新書 - Windows核心原理與實務開發

windows_kernel01.png 

http://www.books.com.tw/exep/prod/booksfile.php?item=0010479211

這是一本被翻譯為正體字以及台灣用語的簡體字書, 原版是《Windows内核原理与实现》

作者blog http://blog.csdn.net/panaimin/archive/2010/02/02/5283070.aspx

這應該(?)是第一本直接講解Windows kernel code的書, 直接拿半開放的WRK source code來實做, 而不是反組譯. 也不用再去啃Windows Internals, 光看Windows Internals實在搞不懂他在說什麼東東.

終於有一本在Windows OS方面與Understanding the Linux Kernel相同"方便"的參考書, 我拿到WRK source code之後, 便迫不及待地嘗試安裝.

 


 

WRK v1.2 對應於 Windows Server 2003 SP1 以及 Windows XP x64 Professional, 原本WRK有提供Server 2003的image (裡面包含著已替換成WRK的OS), 由於我沒拿到這個image, 只好試試看手邊的Server 2003 SP2, 還好可以順利安裝.

書上是用Virtual PC來安裝Server 2003, 大家較熟悉的VMware應該也是可以安裝的, 我選擇用VMware, 因為比較方便XD

拿到WRK後, 先試試看可不可以編譯...

編譯環境: Windows 7 Enterprise (x86)

windows_kernel02.png 

windows_kernel03.png 

編好的kernel就放在 "base\ntos\build\exe" 下的 wrkx86.exe,

WRK可以在很多windows平台上編譯, 如果覺得麻煩, 也可以先安裝好Server 2003, 把WRK放到VM裡面, 在Server 2003上編譯, 步驟都一樣.

 


 

接下來在VMware裡安裝Server 2003 SP2,

測試環境: Windows Server 2003 Enterprise SP2 on VMware Workstation 7.1.1

安裝完後, 把WRK資料夾放進Server 2003裡(因為會使用到tools裡的東西), 如果之前是在Server 2003裡面編譯kernel, 可以直接使用.

windows_kernel04.png 

進入"tools\x86"(in Server 2003) 執行 link -dump -all c:\windows\system32\hal.dll | findstr pdb

如圖中黃框所示, 

halacpi.dll   -> halacpim.dll ; ACPI PIC-based PC [used by VirtualPC]

halaacpi.dll -> halmacpi.dll ; ACPI APIC-based PC

halapic.dll   -> halmps.dll ; MPS

找到相對應的dll, 例如這裡就是要找 halmacpi.dll (存放在 "ws03sp1hals\x86\halmacpi" 裡) ,

把他和之前編譯好的 wrkx86.exe , 一起複製到 c:\windows\system32 (in Server 2003) 裡.

 


 

最後一步, 要修改開機選單, 讓Server 2003開機使用剛剛編好的kernel.

開啟 c:\boot.ini , 在最後面加上一行:

multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="WRK" /noexecute=optout /fastdetect /kernel=wrkx86.exe /hal=halmacpi.dll

其中, hal那邊填上之前複製進去的檔名.

存檔後重新開機...

windows_kernel05.png

就可以看到選單了, 其中, 選項WRK就是使用我們剛剛編好的kernel, 上一行的預設選項是原本的kernel

 


 

接下來, 我們要嘗試使用windbg來debug剛剛裝好的WRK,

篇幅太長, 下次再寫 XD

(pixnet有辦法在同一篇blog文章裡面分頁嗎?)

arrow
arrow
    文章標籤
    Windows WRK
    全站熱搜

    kyletso 發表在 痞客邦 留言(0) 人氣()