Windows7下驱动开发与调试体系构建——1.驱动开发的环境准备

目录/参考资料:https://www.cnblogs.com/railgunRG/p/14412321.html


系统基础环境

开发环境

win7下开发驱动需要安装vs,这里使用2017。

安装vs后需要安装对应版本的wdk,vs版本可在控制面板-程序和功能中看到。


这里的版本为10.0.17763.1

之后,选择KMDF即可开始驱动编写。

 

如果出现error MSB8040: Spectre-mitigated libraries are required for this project.可以通过解决方案-属性-C/C++-代码生成-Spectre缓解 禁用 解决

参考代码:

#include <ntddk.h>
 
// 提供一个Unload函数只是为了让程序能够动态卸载,方便调试
VOID DriverUnload(PDRIVER_OBJECT driver)
{
    // 但是实际上我们什么都不做,只打印一句话:
    DbgPrint("first: Our driver is unloading…\r\n");
}
 
// DriverEntry,入口函数。相当于main。
NTSTATUS DriverEntry(PDRIVER_OBJECT driver, PUNICODE_STRING reg_path)
{
#if DBG
    //_asm int 3
#endif
    // 这是我们的内核模块的入口,可以在这里写入我们想写的东西。
    DbgPrint("first: Hello world!");
 
    // 设置一个卸载函数便于这个函数能退出。
    driver->DriverUnload = DriverUnload;
 
    return STATUS_SUCCESS;
}

注意:x64编译不能使用__asm,需要

#if DEBUG

DbgBreakPoint();

#endif

调试环境

调试环境需要VMware和windbg,安装好vmware后需要安装win7x64系统,相关工具已附到参考资料中。

安装后,设置调试端口即可。

先移除打印机


vmware设置调试端口

 


系统设置

要注意一件事,想要打印dbgprint,还要设置虚拟机的注册表

reg文件:

Windows Registry Editor Version 5.00

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

"DEFAULT"=dword:0000000f

重启后即可生效

windbg安装之后在桌面创建一个快捷方式,设置为以管理员身份启动,然后右键-属性,在目标一栏的后面添加:

-b -k com:pipe,port=\\.\pipe\com_1,resets=0,reconnect -y

调试时先打开windbg,再开虚拟机。


其他内容

vmware设置共享文件夹


windbg设置符号表

笔者用多种方法反复尝试,总是无法配置成功符号表,最终在某大佬的指点下才知道是自己的windbg版本有问题,换版本后即可正常下载符号表。(相关文件已附到参考资料中)

值得一提的是,现在微软官网已无离线符号表下载,但目前还可以用在线下载的符号表。

笔者的符号表路径:srv*E:\mypdb* http://msdl.microsoft.com/download/symbols

相关指令:

.reload 重载符号表

.sympath srv*E:\mypdb* http://msdl.microsoft.com/download/symbols 设置符号表路径

!sym noisy 开启相关提示

!process 0 0 查看活动进程信息

 

posted @ 2021-02-18 16:23  byxiaobai  阅读(289)  评论(0编辑  收藏  举报