▒ 目录 ▒
🛫 导读
需求
驱动一直没有系统的学习过,每次用到的时候总得折腾下安装环境,现在整理下,避免以后再各种查资料。
开发环境
版本号 | 描述 | |
---|---|---|
文章日期 | 2019-05-10 | |
操作系统 | Win10 | |
VS2017 community | ||
Cloud IDE | 1.71.0 | |
WDK | 10.0.17763.1 | |
1️⃣ 安装VS2017 community
网上太多教程,这里就不班门弄斧了。可以参考这篇文章:vs2017安装和使用教程(详细)https://blog.csdn.net/qq_36556893/article/details/79430133。
其中重要的选项如下面截图所示:
注意事项
- VS的首页默认下载是VS2019了,需要选择2017的链接才可以。
- SDK使用的是10.0.17763.0版本,这个得和WDK相同,否则会导致编译错误。
- 如果程序需要支持XP系统,请勾选“对C++的Windows XP支持”选项!
2️⃣ 安装WDK
在官网下载WDK,截止到现在(2019-5-10),该页面就是最新的WDK(也就是《 Windows 10 版本 1809 的 WDK》)。
如果版本不一样,请到下载以前版本的 WDK页面下载。下载后,打开文件属性,再选择详细信息页面,可以看到该文件就是10.0.17763.1
版本。
步骤
WDK安装很简单,依次按照下面的图进行即可:
WDK扩展插件
安装成功后记得安装WDK扩展插件,该文件为
D:\Windows Kits\10\Vsix\WDK.vsix
。
3️⃣ 编写HelloWorld项目
新建WDM项目
打开VS,新建WDM项目(这个分类到测试里面了,应该是微软的bug吧),如下图所示:
h3
新建main.c,添加代码如下:
#include <ntifs.h>
//提供一个卸载函数,让程序能卸载,如果没有这个函数,驱动将不能卸载。
VOID UnDriver(PDRIVER_OBJECT driver)
{
UNREFERENCED_PARAMETER(driver);
KdPrint(("UnDriver.\n"));
}
//入口函数,相当于main。
NTSTATUS DriverEntry(PDRIVER_OBJECT driver, PUNICODE_STRING reg_path)
{
UNREFERENCED_PARAMETER(driver);
UNREFERENCED_PARAMETER(reg_path);
KdPrint(("Hello World!\n"));
driver->DriverUnload = UnDriver;
return STATUS_SUCCESS;
}
删除HelloWorld.inf
无
设置各种配置选项
编译
无
4️⃣ 安装VMWare
VMWare安装也很简单,这里直接找了篇文章:最新超详细VMware虚拟机下载与安装。
至于如何安装虚拟机系统,我实在太赖,直接找了个别人安装好的镜像,或者ghost等。
5️⃣ 安装VirtualKD
参考文章《使用VirtualKD搭建双机调试环境》,很详细。
windbg设置
- 环境变量:
_NT_SYMBOL_PATH=SRV*c:\mysymbol* http://msdl.microsoft.com/download/symbols
- WinDbg菜单:File->Symbol File Path。“C:\MyCodesSymbols; SRVC:\MyLocalSymbolshttp://msdl.microsoft.com/download/symbols”
- WinDbg提供命令行参数-y设置Symbol File Path。
- WinDbg命令:.sympath .reload
- 最后一种,WinDbg的帮助中没有提到,通过注册表设置:HKLM\SOFTWARE\Microsoft\Symbol Server Proxy\Web Directories\symbols下,设置SymbolPath,类型为REG_EXPAND_SZ。可以通过命令行直接添加:
reg add “HKLM\SOFTWARE\Microsoft\Symbol Server Proxy\Web Directories\symbols” /v SymbolPath /t REG_EXPAND_SZ /f /d c:\windows\symbols;SRVd:\symbolshttp://msdl.microsoft.com/download/symbols
🛬 文章小结
📖 参考资料
- windows内核安全编程实践之路 https://www.kanxue.com/book-brief-30.htm
- 微软符号服务器_NT_SYMBOL_PATH带来的隐藏坑 https://www.jianshu.com/p/bd82ba4f0a1a
- VirtualKD-3.0双机调试过程问题记录 https://blog.csdn.net/ty8928861/article/details/87910310
- 看雪 https://bbs.pediy.com/thread-251343.htm
**ps:**文章中内容仅用于技术交流,请勿用于违规违法行为。