Windows驱动开发备注

文章目录
  1. 1. 学习参考资料
  2. 2. 常用工具
  3. 3. 工具使用
    1. 3.1. 编译器
    2. 3.2. 调试器
  4. 4. 一些其他有用的东西

接触Windows内核驱动开发有一段时间了,之前由于资料少老旧走了很多弯路,所以在这里备注哈梳理自己所学。

学习参考资料

1.Windows内核安全驱动开发
2.WIN64驱动编程基础教程
3.各个版本DDK/WDK和sysinternals源码合集
4.看雪论坛
5. Windows7驱动调试小Tips

常用工具

  • 可能要使用到的注册表修改代码:
    1
    2
    3
    4
    5
    6
    7
    8
    //解决win7以上Kdprint、Dbgprint不能输出的问题
    //需要重启
    //和DbgPrintEx的两个参数相关,不同级别。推荐第二种和Android的Log差不多
    Windows Registry Editor Version 5.00

    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Debug Print Filter]

    "DEFAULT"=dword:00000008

或则使用这种方式:

1
2
3
4
//不需要重启
1. windbg连接好被调试的操作系统后,载入符号 (.reload)
2. 枚举符号x nt!kd_default*
3. 修改全局变量的值 ed nt!Kd_DEFAULT_Mask 8 ed nt!Kd_IHVDRIVER_Mask 0x8

  • 工具使用

编译器

调试器

Windbg入门实战讲解
WinDbg的几个默认工作空间(窗口布局)
Windows调试工具入门 — 1、2
windbg常用命令

  • 窗口布局
    单纯的直接使用Windbg会发现界面很单一,不方便查看信息,这时候我们会使用View菜单下多选取几个窗口,但是会发现拖动起来很困难,特别是对于有强迫症的人简直不能忍受。其实Windbg已经给我们提供好了几个布局,这些文件在Windbg安装目录下themes文件夹下,还有个doc文档说明,我们可以直接使用File菜单下的Open Workplace in file打开,也可以寻找其他人的布局如上面的参考2,特别适合内核调试。这些布局配置都保存在HKCU\Software\Microsoft\Windbg项下。
    具体命令用法学习参考1、3(参考3有后续几篇文章都不错,适合学习)

一些其他有用的东西

论ntoskrnl.exe中的导出函数、非导出函数、公开函数、非公开函数
ntoskrnl.exe导出函数用MmGetSystemRoutineAddress获取地址