zoukankan      html  css  js  c++  java
  • 如何搭建Visual Studio的内核编程开发环境

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

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

    一、下载与安装WDK

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

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

    二、Visual Studio的开发环境

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

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

    image

    下一步,在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

    如图:

    image

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

    image

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

    C:WinDDK6000incddk;C:WinDDK6000incapi

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

    first.c

    #include <ntddk.h>

    VOID DriverUnload(PDRIVER_OBJECT driver) 

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

    NTSTATUS DriverEntry(PDRIVER_OBJECT driver, PUNICODE_STRING reg_path) 

        DbgPrint("Entered Driver Entry! ");

        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%insetenv.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

  • 相关阅读:
    poj 2187 Beauty Contest(旋转卡壳)
    poj 2540 Hotter Colder(极角计算半平面交)
    poj 1279 Art Gallery(利用极角计算半平面交)
    poj 3384 Feng Shui(半平面交的联机算法)
    poj 1151 Atlantis(矩形面积并)
    zoj 1659 Mobile Phone Coverage(矩形面积并)
    uva 10213 How Many Pieces of Land (欧拉公式计算多面体)
    uva 190 Circle Through Three Points(三点求外心)
    zoj 1280 Intersecting Lines(两直线交点)
    poj 1041 John's trip(欧拉回路)
  • 原文地址:https://www.cnblogs.com/findumars/p/5543260.html
Copyright © 2011-2022 走看看