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