内核编程学习笔记(001)

1. WDK windows Driver Kit 下载并安装在本机上,安装路径要避免有空格,最新版本还会集成了WinDbg,很方便

 

 

2. 然后编写第一个工程

 

******驱动主程序myfirst.c

 

 

#include <ntddk.h>

 

 

//卸载函数

 

VOID DriverUnload(PDRIVER_OBJECT driver)

 

{

 

DbgPrint("first:Driver is unloading.../r/n");

 

}

 

 

NTSTATUS DriverEntry(PDRIVER_OBJECT driver, PUNICODE_STRING reg_path)

 

{

 

#if DBG

 

_asm int 3

 

#endif

 

//内核模块的入口

 

DbgPrint("first:Hello, Puztion!/r/n");

 

 

//设置一个卸载函数

 

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

 

其实上这段英文的意思就是说,这个文件内容好无聊,你永远也不要修改他(ps:我大致翻译了一下,意思应该差不多)看了这个文件的结构,其实就是最后一行起作用的:

 

!INCLUDE $(NTMAKEENV)/makefile.def

 

 

***********************分割线*********************

 

******有一个SOURCES文件

 

 

TARGETNAME=first

 

TARGETTYPE=DRIVER

 

TARGETPATH=obj

 

SOURCES=myfirst.c

 

 

其中TARGETPATH这行指定生成驱动所在的路径/obj/first.sys

 

其他看英文就差不多知道意思了

 

 

3. 在wdk运行 在对应系统的x86 Checked Build Environment下进入上述文件目录

 

build 就可以生成了

 

还有,特别注意,那三个文件的对应目录不能出现空格

 

build -c 是清楚先前生成的文件,重新生成

 

 

4. 要用到的工具有如下

 

Dbgview //用于查看内核的输入和输出

 

SRVINSTW //用于创建服务来加载驱动

 

DriverMonitor //用于加载驱动

 

Kernel Detective //一款集成的工具,可以查看内核,查看驱动信息等等

 

 

5. Dbgview 要注意的是要把 Capture Kernel 勾选上,捕获内核输出信息

 

 

6. SRVINSTW 要注意的是

 

①在输入目标程序路径的时候是无法选中sys文件的,要手动输入路径

 

②选择设备驱动

 

③NT驱动目标不用,要设置为手动启动服务

 

④要记得服务名,在windows服务管理里是看不到这个服务的,要用SRVINSTW来卸载服务

 

⑤用 net start/stop 服务名 这命令就可以启动对应的服务

 

 

7. DriverMonitor暂时还不是很会用,就会加载便行

 

 

8. 用WinDbg双机调试驱动,在vmware 里添加一个 串口(Serial Port)然后使用管道 命名为 //./pipe/com_1 (这个一般是默认的), 选择 this other end is an application。

 

 

9. 在 虚拟机中的系统 的启动文件 添加多一个启动方式,就是复制原先的一个启动方式,后面加上 /fastdetect /debug /debugport=com1 /baudrate=115200

 

 

10. 创建一个批处理启动WinDbg

 

start windbg.exe -b -k com:port=//./pipe/com_1,baud=115200,pipe

 

 

11. 然后在WinDbg里 FILE->Symbol File Path中选择生成 sys驱动文件的目录 以去加载符号文件

 

 

12. 调试中

 

g: 运行

 

u: 反汇编

 

bp: 下断点

 

bl: 列出断点

 

be: 启动断点

 

bd: 停止断点

 

bc: 删除断点

 

一般上指令和一般的debug差不多

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值