最近正在看《寒江独钓——Windows内核安全编程》这本书,感觉这本书非常好,有兴趣的朋友可以买来看看,有关这本书的信息请参考:http://www.china-pub.com/195592

这本书里没有详细介绍如何搭建Visual Studio的内核编程开发环境,在这里我简单介绍一下,希望能让像我一样刚学习内核编程的朋友更方便地开发。

一、下载与安装WDK

《寒》说,以前说的DDK、IFS已成为历史,现在已经改为使用WDK了,具体下载地址可以这里注册并下载:http://connect.microsoft.com,目前的版本是6001.18002,大小只有577MB。

下载安装后,假设安装路径为“c:\winddk”,接下来要设计环境变量,添加:BASEDIR,值为:“c:\winddk\6001”。必须设置此环境变量,否则下面编译时会出问题。

二、Visual Studio的开发环境

笔者用的是Visual Studio 2005,所以就以此版本介绍,其他版本的类似。

首先新建项目,类型选择Visual C++->General中的“Makefile Project”,这里的项目保存路径不要包括空格、中文等字符,否则会造成后面编译时的出错。

下一步,在Debug Configuration Settings中设置如下:

Build command line: ddk_build chk wxp

Clean commands: ddk_clean chk wxp

Rebuild command line: ddk_build chk wxp /a

Output: first.sys

如图:

下一步,在Release Configuration Settings中与Debug的一样,只是把“chk”改为“fre”即可,如下图:

接下来设置工程属性,在All Configurations中,Configuration Properties->NMake->Include Search Path中添加路径:

C:\WinDDK\6000\inc\ddk;C:\WinDDK\6000\inc\api

接下来添加源代码文件,举个例子:

first.c

#include <ntddk.h>

VOID DriverUnload(PDRIVER_OBJECT driver) 

    DbgPrint("Driver unloading...\n"); 
}

NTSTATUS DriverEntry(PDRIVER_OBJECT driver, PUNICODE_STRING reg_path) 

    DbgPrint("Entered Driver Entry!\n");

driver->DriverUnload = DriverUnload; 
    return STATUS_SUCCESS; 
}

现在可以发现在VS中可以使用VS开发环境带来的强大功能,如查看PDRIVER_OBJECT的定义、查看某变量的成员函数(Ctrl+J)等等。

接下来要为编译作准备,添加以下这些文件:

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

sources

TARGETNAME=first 
TARGETTYPE=DRIVER 
TARGETPATH=obj

SOURCES=first.c

ddk_build.bat

@echo on 
@echo %1 is chk or fre %2 is WXP or W2K or WNET.

if "%4"=="/a" call ddk_clean %1 %2

pushd. 
call %BASEDIR%\bin\setenv.bat %BASEDIR% %1 %2 
popd

@echo on 
build

ddk_clean.bat

if exist Debug rd /s /q Debug 
if exist Release rd /s /q Release 
if exist obj%1_%2_x86 rd /s /q obj%1_%2_x86

现在,按F7就可以编译连接了。

以上就是搭建VS的内核开发环境过程。

三、调试环境

在《寒》一书中,有详细的调试方法介绍,在这里就不说了。不过可以透露的是,使用到的工具是:VMware、WinDbg、srvinstw.exe等。

http://www.cnblogs.com/cxun/archive/2009/08/03/1537646.html

如何搭建Visual Studio的内核编程开发环境的更多相关文章

  1. [内核编程] visual studio 2010配置驱动开发环境

    visual studio 2010 配置驱动开发环境 ** 工具/材料 VS2010.WDK开发包 **  配置过程 以下将讲述VS2010驱动开发环境的配置过程,至于必要软件的安装过程这里不再赘述 ...

  2. Visual Studio 2017进行Python开发环境的搭建,使用VS2017进行python代码的编写。

    Visual Studio 2017进行Python开发环境的搭建,使用VS2017进行python代码的编写. 前提:已经安装过VS2017且进行过配置. 第一部分: Python环境的搭建: 建议 ...

  3. Cocos开发中Visual Studio下libcurl库开发环境设置

    我们介绍一下win32中Visual Studio下libcurl库开发环境设置.Cocos2d-x引擎其实已经带有为Win32下访问libcurl库,Cocos2d-x 3.x中libcurl库文件 ...

  4. Visual Studio下SQLite数据库开发环境设置

    由于我们介绍的内容都是基于微软的Visual Studio下开发的Win32平台,所以下边我们介绍Visual Studio下SQLite数据库开发环境设置.具体而言我们有两种方式可以在Visual ...

  5. Visual Studio 2012下Box2D开发环境设置

    Cocos2d-x 3.x默认情况下采用的物理引擎是Chipmunk,如果我们要使用Box2D引擎,需要进行一些设置和调整,而且不同的开发平台下这些设置也有所不同.由于本书在此之前介绍的都是基于微软的 ...

  6. visual studio 2010配置驱动开发环境

    visual studio 2010 配置驱动开发环境 ** 工具/材料 VS2010.WDK开发包 **  配置过程 以下将讲述VS2010驱动开发环境的配置过程,至于必要软件的安装过程这里不再赘述 ...

  7. Cocos发育Visual Studio下一个HttpClient开发环境设置

    Cocos2d-x 3.x相关类集成到网络通信libNetwork图书馆project于.这其中包括:HttpClient分类. 我们需要在Visual Studio溶液中加入libNetwork图书 ...

  8. Windows 7 Visual Studio 2008配置OpenGL开发环境

    Windows 7 Visual Studio 2008配置OpenGL开发环境 glut下载地址: http://www.opengl.org/resources/libraries/glut/gl ...

  9. Visual Studio Code配置 HTML 开发环境

    Visual Studio Code配置 HTML 开发环境 https://v.qq.com/x/page/l0532svf47c.html?spm=a2h0k.11417342.searchres ...

随机推荐

  1. BI商业智能项目中的若干风险要素

    BI商业智能项目应在 “业务驱动,总体规划,统一设计,分期实施” 的总体设计原则下分期实施,采取Agile BI方法论迭代开展,先确保核心功能满足客户需求,在总体规划下不断完善整个系统,以提高可交付性 ...

  2. DevExpress ASP.NET 使用经验谈(2)-XPO对象的使用(使用默认数据连接)

    接下来,我们通过一个控制台应用程序,介绍XPO对象的保存操作. 图一 添加新项目 图二 选择项目类型为控制台应用程序 查看生成的Program.cs代码文件,代码如下: using System; u ...

  3. Java多线程之synchronized(五)

    上篇介绍了用synchronized修饰static方式来实现“Class 锁”,今天要介绍另一种实现方式,synchronized(class)代码块,写法不一样但是作用是一样的.下面我附上一段代码 ...

  4. 在 Android 中 Intent 的概念及应用

    一.显式Intent: startActivity(new Intent(MainActivity.this, 类名.class));   二.隐式Intent: 1.在AndroidManiFest ...

  5. VisualSVN Server安装后,TortoiseSVN远程无法访问版本库。

    修正!重演了一遍,发现总结有误,重新整理下.首先访问版本库的路径不清楚的话可以在VisualSVN Server的版本库上右键“Copy URL to Clipboard”.访问版本库失败的几种情况: ...

  6. Asp.Net MVC4.0 官方教程 入门指南之四--添加一个模型

    Asp.Net MVC4.0 官方教程 入门指南之四--添加一个模型 在这一节中,你将添加用于管理数据库中电影的类.这些类是ASP.NET MVC应用程序的模型部分. 你将使用.NET Framewo ...

  7. git从github下载代码

    Github作为远程仓库的使用详解  http://blog.csdn.net/djl4104804/article/details/50778717 centos local:        通过g ...

  8. centos 6.4 FTP安装和配置

    链接地址:http://blog.csdn.net/wind520/article/details/38019647 1: 安装 检查是否安装 [root@localhost ~]# rpm -qa ...

  9. poj3693之后缀数组

    Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 5946   Accepted: 1799 Description The r ...

  10. PHP学习笔记10-图片加水印

    先找好一张图片,更名为face.jpeg,创建watermark.php: <?php /** * Created by PhpStorm. * User: Administrator * Da ...