WINDOWS内核开发环境配置

jopen 10年前

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目录下。

WINDOWS内核开发环境配置

3.     安装和运行第一个例子

编译生成的.sys文件不能直接运行,要用到类似srvinstw之类的软件安装和卸载。

查看输出信息要用到类似DebugView之类的软件,记得勾选Capture Kernel选项。

安装完服务,执行:

$net start first  $net stop first

结果如下:

WINDOWS内核开发环境配置

4.     Win7调试内核模块(虚拟机)

(1)      安装vmvare虚拟机,安装win7系统

(2)      安装WinDbg(能调试windows内核模块的软件并不多,另还有SyserSoftice)

(3)      设置虚拟机中的win7调试执行模式,步骤如下:

按照《寒江独钓windows内核安全编程》上面的操作,没有配置成功,具体是设置完debug启动模式,但是串口连接不上。(应该可以连上,在虚拟机中按回车)

 

         这里用一种新的,更好的方法。用一个VirtualKD软件。

 

1.      下载并解压VirtualKD-2.8

2.      把解压文件夹里面的target文件夹拷贝到虚拟机

3.      在虚拟机中运行target/vminstall.exe

WINDOWS内核开发环境配置

安装完成后重启。

4.      在主机运行vmmon程序

WINDOWS内核开发环境配置

Run debugger会自动启动WinDbg程序(路径设置好)

WINDOWS内核开发环境配置

显示红框里面内容时,在虚拟机中按回车!重要!重要!!!

 

至此,已经可以对win7进行内核调试了。

来自:http://my.oschina.net/zangzy/blog/182883