zoukankan      html  css  js  c++  java
  • windows内核开发环境的简易搭建

    一、windows内核开发需要的软件

    1.WDK

    2.WinDbg

    3.virtualKD

    4.DebugView

    5.Visual C++ 6.0

    6.VMware Workstation


    二、windows内核开发软件的安装


    1.WDK的安装和配置

    wdk的下载地址:http://download.microsoft.com/download/4/A/2/4A25C7D5-EFBE-4182-B6A9-AE6850409A78/GRMWDK_EN_7600_1.ISO

    首先下载驱动开发包GRMWDK_EN_7600_1.ISO,并解压到本地文件夹,解压后WDK安装包:









    OK到现在为止,WDK的安装和配置全部完成,接下来的活就是它的使用。


    2.virtualKD的安装和配置

    在内核驱动开发时,VMware Workstation是必不可少的,VMware Workstation的安装教程网上很多(问度娘)。

    假设VMware Workstation虚拟机已经安装好了,并且已经成功安装了Windows XP系统。笔者的虚拟机的版本:VMware Workstation10.1,虚拟机里安装的系统版本: Windows XP sp3(目标机),本地安装的系统版本:Windows XP sp3(宿主机)

    virtualKD的下载地址:http://virtualkd.sysprogs.org/download/VirtualKD-2.8.exe

    首先下载virtualKD到本地,并解压,如图:







    现在从虚拟机xp系统回到本地调试机XP系统中:




    OK到现在为止,virtulKD的安装和配置全部完成,接下来的活就是它的使用。


    3.内核驱动开发IDE的使用

    其实用EditPlus等文本软件工具也可以进行驱动程序的编码,但是不太方便。

    由于驱动程序的编写主要是用C/C++,因此我们可以配置一下Visual C++ 6.0来进行驱动程序的简易编写。






    三、windows内核驱动程序的编写

    一个简单的驱动程序所包含的文件:



    Hello.c的源码:

    <span style="font-family:Microsoft YaHei;font-size:10px;">//开发NT驱动需要的头文件
    #include <ntddk.h>  
    
    //驱动卸载函数的声明
    VOID DriverUnload( 
    		  IN PDRIVER_OBJECT  DriverObject 
    		  ); 
    
    //驱动入口点函数
    NTSTATUS DriverEntry(__in struct _DRIVER_OBJECT  *DriverObject,
                __in PUNICODE_STRING  RegistryPath 
                )
    {
       //设置驱动的卸载函数
    	DriverObject->DriverUnload = DriverUnload;
    
      //只会在checked版下显示输出
      KdPrint(("hello wdk!
    "));
    
      return STATUS_SUCCESS;
    } 
    
    //驱动卸载函数
    VOID DriverUnload( 
    			 IN PDRIVER_OBJECT  DriverObject 
    		  )
    {
    	KdPrint(("DriverUnload
    "));
    }
    
    //注:当在VC6.0的Include File里添加了WDK的头文件以后,
    //在VC6.0里写代码就会出现代码高亮</span>

    makefile文件--对于所有的驱动程序来说,内容是不变的(直接拷贝过来使用)。



    sources文件--驱动编译的配置文件



    一个简单的驱动程序需要的3个文件都准备好了,现在可以开始编译了:


    开始编译:


    编译后的文件夹:


    编译成功生成的驱动:








  • 相关阅读:
    Python与常见加密方式
    ERROR 2002 (HY000):Can't connect to local MySQL server though socket '/var/lib/mysql/mysql.sock'(2)
    hive的分区表
    内部表和外部表的区别
    hive之SQL
    执行wc的时候提示连接被拒绝。Connection refused
    hive的简介
    hive的部署
    top命令信息
    web界面解读
  • 原文地址:https://www.cnblogs.com/csnd/p/11800752.html
Copyright © 2011-2022 走看看