命令行编译 WRK ,windbg 调试
一、準(zhǔn)備工作
本文記錄如何用命令行編譯WRK內(nèi)核,下面列出需要準(zhǔn)備的東西:
- win2k3 sp1 虛擬機環(huán)境
- WRK v1.2源碼
- 兩個需要用到的dll:msvcr71.dll ,msvcp71.dll
我看其他博客有人用 win2k3 sp2 也成功了,但我還是按照書上的教程,裝的sp1版本。
/s/1x-vmB0TRY27CZErIvZS8UA
提取碼:u4j3
二、編譯 WRK
進入 wrk 根目錄,創(chuàng)建bat文件,用于編譯x86版本,輸入以下內(nèi)容:
編譯x86.bat
set path=e:\wrk-v1.2\tools\x86;%path% cd base\ntos nmake -nologo x86=msvcr71.dll ,msvcp71.dll復(fù)制到 WRK-v1.2\tools\x86 目錄下。
然后雙擊bat就能編譯相應(yīng)版本的wrk內(nèi)核了,這個過程會持續(xù)一分鐘左右。
編譯x86成功后結(jié)果如圖:
三、啟動 WRK
教程上說的要使用多核版本,所以虛擬機設(shè)置成多核的:
假設(shè)您已經(jīng)準(zhǔn)備好 win2k3 sp1 虛擬機了,打開虛擬機,進入 system32,把剛剛編譯生成的 wrkx86.exe 復(fù)制進去,然后回到 wrk 根目錄,把 wrk-v1.2\ws03sp1hals\x86\halacpim\halacpim.dll 也復(fù)制到 system32里。
下面引用 《Windows內(nèi)核原理與實現(xiàn)》附錄A的一段話:
注意,實體機系統(tǒng)的HAL 有三種可能:如果是支持ACPI 的PIC(中斷控制器)機 器,則使用halacpim.dll;如果是支持ACPI
的APIC(高級可編程中斷控制器)機器,則 使用halmacpi.dll;如果是非PIC 和APIC 的機器,則使用halmps.dll
。WRK 的 WRK-v1.2\WS03SP1HALS\x86\目錄下包含了這三個HAL 模塊。
然后修改 c:\boot.ini ,加兩行配置,分別是 WRK 調(diào)試模式和 WRK 非調(diào)試模式:
[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="Windows Server 2003, Enterprise" /noexecute=optout /fastdetect multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="WRK Debug" /noexecute=optout /fastdetect /debug /debugport=com_debug /kernel=wrkx86.exe /hal=halacpim.dll multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="WRK Noebug" /noexecute=optout /fastdetect /kernel=wrkx86.exe /hal=halacpim.dll最后,關(guān)閉 win2k3,修改虛擬機屬性,添加一個 com_debug 端口用于雙機調(diào)試:
四、調(diào)試 WRK
啟動 windbg,參數(shù)如下:
"C:\Program Files (x86)\Debugging Tools for Windows (x86)\windbg.exe" -b -k com:pipe,port=\\.\pipe\com_debug,baud=115200,reconnect -y啟動虛擬機,選擇第二項,WRK調(diào)試,但是先別點,先改一下符號文件:
先改符號文件,我們把 halacpim.pdb 和 wrkx86.pdb 這兩個符號文件加到 windbg 里,勾選 reload,點OK就好了。
這時候就可以讓虛擬機跑起來了:
這樣就是成功了,g 讓系統(tǒng)跑起來,然后下一個斷點看看: bp NTQuerySystemInformation :
斷下來了,太好了!
五、windbg 常用命令
總結(jié)
以上是生活随笔為你收集整理的命令行编译 WRK ,windbg 调试的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 进程句柄表初始化,扩展,插入删除句柄源码
- 下一篇: vs2019 编译 WRK 踩坑记录