0x00.前言
将学习的内容做以下总结,学艺不深,有错误的地方还望各位指出。
一些图是借用的网络上的,部分内容截图比较麻烦。内容分为三个方面:
·搭建编译环境
·设置编译选项
·测试项目
0x01.搭建编译环境
搭建环境网上的文章有一些,但我按照网上的流程搭建了一遍之后发现一个问题——找不到相关头文件比如<ntddk.h>
这事因为sdk的版本和wdk版本不匹配,所以,最好的安装步骤是先安装vs2015再安装WDK10

我的两个版本如上,或者安装vs时不选择sdk,安装vs之后再去官网上选择合适的sdk和wdk
其次是搭建双机调试环境,忘掉古老的设备接口吧,这里用VirtualKD
39fK9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8X3u0D9L8$3N6Q4x3X3g2U0M7$3c8F1i4K6u0W2L8X3g2@1i4K6u0r3j5$3!0U0i4K6g2X3K9#2)9J5c8X3q4J5N6r3W2U0L8r3g2Q4x3V1k6V1k6i4c8S2K9h3I4K6i4K6u0r3y4e0t1H3x3K6b7&6x3U0M7`.
这篇文章写得很详细
0x02.设置编译选项
现在我们修改编译选项实现一个打印遍历驱动的程序
新建wdm项目

添加新建项,并改后缀为.c


删除自动生成的.inf文件
修改编译选项如下,不一一截图:
// C/C++
// |-常规
// | |-视警告为错误:否
// |-优化
// | |-优化:已禁用
// | |-启用内部函数:否
// *-代码生成
// |-启用字符串池:否
// |-安全检查:禁用安全检查(/GS-)
// *-启用函数级连接:否(/Gy-)
//
// 链接器
// |-常规
// | *-将链接器警告视为错误:否
// |-调试
// | |-生成完整的数据库文件:是
// *-高级
// |-入口点:DriverEntry
//
// Driver Setting
// |-General
// | *-Target OS Version:windows 7
// | *-Target Platform:Desktop //这些自定义
这样修改编译选项生成的文件更为纯净容易分析,下图是拖到IDA里面的效果
如果没有这方面的需要只需修改下面的选项即可
// | |-视警告为错误:否
// | *-将链接器警告视为错误:否
// | *-Target OS Version:windows 7
// | *-Target Platform:Desktop //这些自定义

0x03.测试
注意:一些古老的教材提到wdk自带一个build environment的文件夹,通过这里面的exe命令行进行编译
而wdk10不再支持这种方式,已经将这个整合到vs里了,请按照上文的编译环境配置
源码见附件,从DriverEntry入口开始分析即可

另外windbg需要获得打印的调试信息,需要拷贝下面文字到记事本,改后缀名为.reg,双击导入被调试虚拟机注册表
并且需要重启目标虚拟机
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Debug Print Filter]
"DEFAULT"=dword:0000000f
另外对于学习驱动的朋友题两点建议:
1.多看一些新的教材,老的教材就直接放弃吧,推荐以下教程:
a68K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6i4k6T1j5i4y4E0i4K6u0W2j5$3!0E0i4K6u0r3N6r3S2J5k6h3q4V1i4K6u0V1y4K6V1%4x3g2)9J5k6o6q4Q4x3X3b7I4i4K6u0W2K9s2c8E0L8l9`.`.
《Windows内核安全与驱动开发》
2.明确重点,从事逆向的工作直接跳过硬件接口方面的章节
额外推荐阅读:
aabK9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6h3#2&6j5$3!0V1k6g2)9J5k6h3&6W2N6q4)9J5k6h3y4F1i4K6u0r3L8r3q4F1k6%4g2S2k6$3g2Q4x3V1k6U0M7s2m8Q4x3V1j5I4y4K6M7I4i4K6u0W2K9s2c8E0L8l9`.`.
55dK9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6h3@1#2K9r3!0E0k6g2)9J5k6h3y4G2L8g2)9J5c8X3u0T1M7#2)9J5c8Y4c8Z5M7X3g2S2k6q4)9J5k6o6R3&6x3o6g2Q4x3X3b7I4i4K6u0V1x3g2)9J5k6h3S2@1L8h3H3`.
[培训]科锐逆向工程师培训第53期2025年7月8日开班!