WINDOWS內核開發環境配置
1. 下載和安裝wdk
Windows Driver Kit Version 7.1.0下載地址:http://www.microsoft.com/en-us/download/details.aspx?id=11800
注意的問題:
(1) 安裝到一個簡單的路徑如c:\WinDDK,避免路徑上有空格,否則可能出現編譯問題。
(2) 選擇完全安裝,否則會錯過一些代碼例子。
2. 編寫第一個例子
first.c文件 :
/// /// @file first.c /// @author crazy_chu /// @date2008-11-1 /// #include// 提供一個Unload函數只是為了讓這個程序能動態卸載,方便調試 VOID DriverUnload(PDRIVER_OBJECT driver) { //但是實際上我們什么都不做,只打印一句話: DbgPrint("first: Our driver is unloading…\r\n"); } // DriverEntry,入口函數。相當于main。 NTSTATUS DriverEntry(PDRIVER_OBJECT driver, PUNICODE_STRING reg_path) { #if DBG // _asm int 3 #endif //這是我們的內核模塊的入口,可以在這里寫入我們想寫的東西。 //我在這里打印一句話。因為”Hello,world”常常被高手恥笑,所以 //我們打印一點別的。 DbgPrint("first:Hello, my salary!"); //設置一個卸載函數便于這個函數能退出。 driver->DriverUnload = DriverUnload; return STATUS_SUCCESS; }
Makefile文件 :
!IF 0 Copyright (C) Microsoft Corporation, 1999 - 2002 Module Name: makefile. Notes: DO NOT EDIT THIS FILE!!! Edit .\sources. if you want to add a new source file to this component. This file merely indirects to the real make file that is shared by all the components of Windows NT (DDK) !ENDIF !INCLUDE $(NTMAKEENV)\makefile.def
Makefile文件就是這些,永遠都不需要改動的。
SOURCES文件 : TARGETNAME=first TARGETTYPE=DRIVER SOURCES=first.c TARGETPATH=obj
TARGETNAME是編譯出來模塊的名字,比如first.sys
SOURCES代碼要編譯的源文件,first.c
這三個文件寫好了,接下來編譯。
從開始菜單——所有程序——Windows Driver Kits——WDK的版本——Build Environment——Windows 7——x86 Checked Build Environment
cd進入工程的目錄,執行build命令。即可編譯生成first.sys位于first\objchk_win7_x86\i386目錄下。
3. 安裝和運行第一個例子
編譯生成的.sys文件不能直接運行,要用到類似srvinstw之類的軟件安裝和卸載。
查看輸出信息要用到類似DebugView之類的軟件,記得勾選Capture Kernel選項。
安裝完服務,執行:
$net start first $net stop first
結果如下:
4. Win7調試內核模塊(虛擬機)
(1) 安裝vmvare虛擬機,安裝win7系統
(2) 安裝WinDbg(能調試windows內核模塊的軟件并不多,另還有Syser和Softice)
(3) 設置虛擬機中的win7調試執行模式,步驟如下:
按照《寒江獨釣windows內核安全編程》上面的操作,沒有配置成功,具體是設置完debug啟動模式,但是串口連接不上。(應該可以連上,在虛擬機中按回車)
這里用一種新的,更好的方法。用一個VirtualKD軟件。
1. 下載并解壓VirtualKD-2.8
2. 把解壓文件夾里面的target文件夾拷貝到虛擬機
3. 在虛擬機中運行target/vminstall.exe
安裝完成后重啟。
4. 在主機運行vmmon程序
Run debugger會自動啟動WinDbg程序(路徑設置好)
顯示紅框里面內容時,在虛擬機中按回車!重要!重要!!!
至此,已經可以對win7進行內核調試了。
來自:http://my.oschina.net/zangzy/blog/182883