2020年8月24日 星期一

Windows 7 x86 kernel debugging

研究作業系統除了一些基礎知識可以透過網路文獻或者書本上的訊息來得知,我們也可以利用動態分析的技巧來了解它的運作行為,因此需要Debugger的工具來協助我們分析作業系統。本篇會使用VMware安裝Windows 7 x86,並且利用VirtualKD建立Debugger的橋樑,再透過windbg來Debug作業系統,我們之所以會使用VirtualKD是因為建置環境比較方便並且分析時會比較順暢,在運行單步執行的途中不會卡卡的。

工具

VirtualKD:https://sysprogs.com/legacy/virtualkd/

windbg:http://www.windbg.org/

VMware:https://my.vmware.com/web/vmware/downloads/#all_products

一、安裝VirtualKD

下載完VirtualKD後,直接執行它,它會將檔案解壓縮,我們需要將target資料夾移到VMware裡面的Windows 7。



接著安裝vminstall。



在安裝的過程中,我們直接使用它預設好的設定,並且按下Install。



二、設定Debugger path

執行VirtualKD的vmmon,它可以監控VMware裡面的Windows 7系統,也可以透過windbg來Debug Windows 7 kernel,不過需要設置windbg的路徑,首先點選Debugger path,然後移到windbg的安裝目錄,並且選擇windbg的執行檔(如果沒有安裝windbg,需要先安裝它)。





三、設置windbg的Symbol

我們在使用windbg分析Kernel時,可能會透過API(Application Programming Interface)的名稱來下中斷點或者分析API的程式碼,此時需要從Windows的網站來下載這些Symbol。

在windbg的工具欄點選File->Symbol File Path後,它會跳出Symbol設定的視窗,然後設置下載的網址和目的資料夾,設置完後,我們需要建立C:\WinSymbols\X86的資料夾。 (srv*C:\WinSymbols\X86*https://msdl.microsoft.com/download/symbols)



接下來開始下載Symbol,在Command的式窗執行!sym noisy和.reload /f指令,需要等待一段時間,直到它下載完畢。



四、Windows 7 Kernel Debugging

當VMware執行Windows 7,可以在vmmon上看到系統的資訊,如果要Debugging kernel我們需要按下Run Debugger。



在按下Run Debugger後,要開機VMware裡面的Windows 7,它會停留在開機選單直到超過30秒,與此同時按下VirtualKD的偵錯模式。



在windbg還未接管Windwos 7 kernel,它會跳出Debuggee not connected的訊息。



在等待幾秒的時間,很快的它就會接管Windows 7 kernel,我們就可以開始分析Kernel的程式碼。



在windbg接管後,VMware裡面的Windows 7就會卡住,如果要讓它繼續運行,需要在windbg裡面按下Run (F5)。