Windows_xp_win7-驱动编译与双虚拟机调试环境搭建

2025-01-29 5 0

一.简述

  • 因最近需要编写一些xp与win7上的驱动程序,但是网上搜索环境配置要不就很老旧,要不很繁琐,最好还是能双虚拟机调试,在网上没有找到能完全满足需求的,就整合网上的一些资源编写此文档。

  • 主要内容为使用vmware 双win7虚拟机调试、win7安装vs2015、使用驱动模板编译win7与xp驱动

二.环境介绍

应用名称 版本 备注
windows7 x64 调试机 windows7 x64 sp1 cn_windows_7_professional_with_sp1_x64_dvd_u_677031.iso
windows7 x64 被调试机 windows7 x64 sp1 cn_windows_7_professional_with_sp1_x64_dvd_u_677031.iso
WDK 7600 7600.16385.1 https://www.microsoft.com/en-us/download/details.aspx?id=11800
VS 2015 Visual Studio 2015Community
ie 11 ie 11 https://support.microsoft.com/zh-cn/windows/%E4%B8%8B%E8%BD%BD-internet-explorer-11-%E8%84%B1%E6%9C%BA%E5%AE%89%E8%A3%85%E7%A8%8B%E5%BA%8F-99d492a1-3a62-077b-c476-cf028aff9a7f
wingdb 6.12 调试工具
vmware workstation vmware workstation 17 pro
SRVINSTW.EXE SRVINSTW.EXE 安装驱动程序
dbgview64.exe dbgview64.exe 查看驱动打印
vs2013驱动开发模板 驱动配置模板 https://bbs.kanxue.com/thread-188471.htm
Everything Everything-1.4.1.935.x86-Setup
64Signer 64Signer 签名工具
  • win7 虚拟机不能安装vm tools

    • https://catalog.update.microsoft.com/Search.aspx?q=kb4474419

  • vs2015支持模板导出,也可以选择制作自己的模板

三.安装测试wdk7600

3.1.安装wdk7600

  • 下载WDK 7600并解压执行

Windows_xp_win7-驱动编译与双虚拟机调试环境搭建插图

  • 勾选全部选项并点击ok

Windows_xp_win7-驱动编译与双虚拟机调试环境搭建插图1

  • 选择路径,我这直接点击ok

Windows_xp_win7-驱动编译与双虚拟机调试环境搭建插图2

  • 点击Finish完成安装

Windows_xp_win7-驱动编译与双虚拟机调试环境搭建插图3

3.2.使用wdk7600编译驱动程序

3.2.1.驱动代码

  • 创建first目录,在此目录中创建三个文件

  • first.c

#include <ntddk.h>

VOID DriverUnload(PDRIVER_OBJECT driver){
		     DbgPrint("first:Our driver is unloading\r\n");
		 }
		 NTSTATUS DriverEntry(PDRIVER_OBJECT driver,PUNICODE_STRING reg_path){
		
		     DbgPrint("first:Our hello my salary\r\n");
		
		     driver->DriverUnload=DriverUnload;
		     return STATUS_SUCCESS;
}
  • makefile

!IF 0
Module Name:
makefile .
Notes:
DO NOT EDIT THIS FILE!!!
!ENDIF
!INCLUDE $(NTMAKEENV)\makefile.def
  • SOURCES

TARGETNAME=first
TARGETTYPE=DRIVER
SOURCES=first.c
  • TARGETNAME表示名字,编译出来之后模块的名字first.sys

  • SOURCES表示要编译的.c文件

    • 不要加入.h文件,.h是被包含在.c文件中编译的

3.2.2.编译

  • 开始菜单中,选择 所有程序 ,然后选择Windows Driver Kits->WDK版本->Build Environments->Windows 7->x64 Checked Build Environment

Windows_xp_win7-驱动编译与双虚拟机调试环境搭建插图4

  • 进入 first 目录执行 build 命令

Windows_xp_win7-驱动编译与双虚拟机调试环境搭建插图5

  • 编译结束, first.sys 出现在C:\Users\test\Desktop\first\objchk_win7_amd64\amd64目录下

Windows_xp_win7-驱动编译与双虚拟机调试环境搭建插图6

3.3.测试驱动程序

3.3.1.安装驱动程序

  • 在一台新安装的win7 x64 sp1虚拟机上执行,在开机时按下f8,禁用驱动签名,将生成的first.sys拷贝到此虚拟机

Windows_xp_win7-驱动编译与双虚拟机调试环境搭建插图7

  • 使用管理员权限打开SRVINSTW.EXE安装服务点击下一步

Windows_xp_win7-驱动编译与双虚拟机调试环境搭建插图8

  • 本地机器点击下一步

Windows_xp_win7-驱动编译与双虚拟机调试环境搭建插图9

  • 服务名称填写first然后点击下一步

Windows_xp_win7-驱动编译与双虚拟机调试环境搭建插图10

  • 根据first.sys所在路径填写,文件位置

Windows_xp_win7-驱动编译与双虚拟机调试环境搭建插图11

  • 选择设备驱动,点击下一步

Windows_xp_win7-驱动编译与双虚拟机调试环境搭建插图12

  • 默认点击下一步

Windows_xp_win7-驱动编译与双虚拟机调试环境搭建插图13

  • 选择手动,点击下一步

Windows_xp_win7-驱动编译与双虚拟机调试环境搭建插图14

  • 点击完成,弹出服务成功安装

Windows_xp_win7-驱动编译与双虚拟机调试环境搭建插图15

3.3.2.执行驱动程序

  • 管理器权限执行dbgview64.exe,在菜单栏点击capture,然后全部勾选

Windows_xp_win7-驱动编译与双虚拟机调试环境搭建插图16

  • 管理员启动cmd,执行net start first,可以看到dbgview64.exe,有打印输出与,上述驱动代码相同

Windows_xp_win7-驱动编译与双虚拟机调试环境搭建插图17

net start first \\启动驱动
net stop first	\\停止驱动
sc delete first \\卸载驱动
  • 如上面所示wdk7600安装成功

四.安装vs2015

4.1.安装IE11

  • 因为vs2015要求安装ie 10以上版本,这里安装ie11

Windows_xp_win7-驱动编译与双虚拟机调试环境搭建插图18

  • 可能有下列情况,先尝试直接安装,直接安装不成功或者看报错信息在选择执行情况1或情况2

  • 情况1:有可能安装IE11需要补丁,补丁链接如下

32位

http://www.microsoft.com/zh-cn/download/internet-explorer.aspx

64位

http://www.microsoft.com/zh-cn/download/details.aspx?id=45154
  • 情况2安装证书:

  • 在win10系统上Windows键+R 弹出运行对话框,输入certmgr.msc,打开Windows的证书管理器

  • 导出如下证书安装在win7系统上

1.Microsoft Root Certificate Authority 2010;

2.Microsoft Root Certificate Authority 2011;

3.COMODO RSA Certification Authority;

Windows_xp_win7-驱动编译与双虚拟机调试环境搭建插图19

  • 将上面三个证书拷贝到win7系统然后安装上去

Windows_xp_win7-驱动编译与双虚拟机调试环境搭建插图20

4.2.安装vs2015

  • 运行vs2015安装程序,这里我选择自定义

Windows_xp_win7-驱动编译与双虚拟机调试环境搭建插图21

  • 只选择c++然后点击下一步

Windows_xp_win7-驱动编译与双虚拟机调试环境搭建插图22

  • 点击安装

Windows_xp_win7-驱动编译与双虚拟机调试环境搭建插图23

  • 等待安装成功即可

Windows_xp_win7-驱动编译与双虚拟机调试环境搭建插图24

Windows_xp_win7-驱动编译与双虚拟机调试环境搭建插图25

五.配置vs2015编译驱动

  • 这里是使用模板的方式进行的配置编译驱动,这里直接使用网上大佬放出来的模板,也可以自己进行配置然后导出是一样的,但是会很耗费时间与精力

5.1.配置环境变量

  • 新建WDKPATH,并添加wdk路径

Windows_xp_win7-驱动编译与双虚拟机调试环境搭建插图26

5.2.设置模板

  • 安装Everything,搜索ProjectTemplates目录

Windows_xp_win7-驱动编译与双虚拟机调试环境搭建插图27

  • 进入ProjectTemplates,将下载好的模板拷贝过去,然后重启系统

Windows_xp_win7-驱动编译与双虚拟机调试环境搭建插图28

5.3.编译驱动程序

  • 打开vs2015创建新项目,点击c++,可以发现出现了Windows Driver1

  • 创建Windows Driver1项目,名称填写first2,将一开始编写的驱动代码拷贝过去

Windows_xp_win7-驱动编译与双虚拟机调试环境搭建插图29

  • 如下图所示使用此项目可以编译多种系统的驱动,Checked为调试,free为re版

Windows_xp_win7-驱动编译与双虚拟机调试环境搭建插图30

  • 并且可以选择x64x86,需要注意无法编译xp下的x64的驱动程序

  • 需要注意这是使用vs2013的模板,需要将项目属性改为v140

Windows_xp_win7-驱动编译与双虚拟机调试环境搭建插图31

  • 生成->重新生成解决方案

Windows_xp_win7-驱动编译与双虚拟机调试环境搭建插图32

5.4.更改模板

  • 1.更改上面的平台工具集

  • 2.在属性面板,可以看到全程序优化(无全程序优化)

Windows_xp_win7-驱动编译与双虚拟机调试环境搭建插图33

  • 3.更改到re版,可以看到使用链接时间代码生成

Windows_xp_win7-驱动编译与双虚拟机调试环境搭建插图34

  • 在属性页,点击链接器->优化->使用快速链接时间代码生成 (/LTCG:incremental),这样编译会报错

Windows_xp_win7-驱动编译与双虚拟机调试环境搭建插图35

  • 需要改成使用链接时间代码生成 (/LTCG),即可完成编译

Windows_xp_win7-驱动编译与双虚拟机调试环境搭建插图36

  • 自己也可以制作成模板,就不需要每次编写驱动,进行配置vs

六.双虚拟机调试驱动

  • 本文中的调试机与被调试机都为win7 x64 sp1

6.1.配置调试机

  • 该端是服务器 ,另一端是虚拟机

Windows_xp_win7-驱动编译与双虚拟机调试环境搭建插图37

  • 打开windbg左上角的 File然后点击Kernel Debug 然后再点击 COM ,设置如下图所示 ,然后点击确定

  • 安装的wdk7600中就带有windbg

Windows_xp_win7-驱动编译与双虚拟机调试环境搭建插图38

  • 选择com,然后点击确认,设置如下图所示

Windows_xp_win7-驱动编译与双虚拟机调试环境搭建插图39

  • 点击确定后的画面如下图所示,然后重启Win 7 在 Win 7 虚拟机那边选择启用调试程序

Windows_xp_win7-驱动编译与双虚拟机调试环境搭建插图40

6.2.配置被调试机

  • 虚拟机的串行端口设置如下(该端是客户端 ,另一端是虚拟机 ),命名管道设置为 \.\pipe\com_1

Windows_xp_win7-驱动编译与双虚拟机调试环境搭建插图41

  • 以管理员身份运行cmd执行bcdedit,一般只有一个标识为{current}的启动加载器是当前的启动配置

Windows_xp_win7-驱动编译与双虚拟机调试环境搭建插图42

  • 使用如下命令建立一个新的启动项,并且使用bcdedit检查是否copy成功

bcdedit /copy {current} /d "Windwos7"
  • 设置新的启动项

bcdedit /debug ON
bcdedit /bootdebug ON
  • 查看当前的调试配置bcdedit /dbgsettings,一般会显示出使用的第一个串口波特率为115200bps

Windows_xp_win7-驱动编译与双虚拟机调试环境搭建插图43

  • 选择菜单的超时,我设置为15秒: bcdedit /timeout 15

  • 重新启动,当需要调试时就用调试模式进入

6.3.驱动调试准备

6.3.1.断点

  • 32位支持内联asm汇编

  • 64位利用在Source文件中直接添加asm文件,直接在asm文件中写汇编代码,然后将asm文件编译为OBJ文件。然后就可以在c++文件中声明asm文件中的函数后直接使用asm文件中用汇编写的函数

  • 64位也可使用 DbgBreakPoint();

#include <ntddk.h>
VOID DriverUnload(PDRIVER_OBJECT driver) {
	DbgPrint("first:Our driver is unloading\r\n");
}
NTSTATUS DriverEntry(PDRIVER_OBJECT driver, PUNICODE_STRING reg_path) {
	DbgBreakPoint();
	DbgPrint("first:Our hello my salary\r\n");

	driver->DriverUnload = DriverUnload;
	return STATUS_SUCCESS;
}
  • 本文使用此方法

6.3.2.签名

  • win7 x64安装驱动需要签名,这里使用64Signer

Windows_xp_win7-驱动编译与双虚拟机调试环境搭建插图44

6.3.3.调试符号下载与配置

  • 使用windbg自动下载符号很慢,所以使用windbg目录中存在 symchk.exe 程序,使用如下命令可进行下载

symchk.exe /r c:\windows\system32\ /s SRV*C:\Users\test\Desktop\symblos\*http://msdl.microsoft.com/download/symbols 

- /r c:\windows\system32\ 下载system32下的符号
- SRV*C:\Users\test\Desktop\symblos\ 下载符号的保存路径
- http://msdl.microsoft.com/download/symbols 微软的符号服务器
  • 加载被调试驱动的符号

  • Windbg->file->symbol file path,根据自己的路径填写,本文填写示例如下:

C:\Users\test\Desktop\code\test\first6\x64\Checked_win7;srv*C:\Users\test\Desktop\symblos*http://msdl.microsoft.com/download/symbols
  • 第一个路径为编译驱动的驱动的符号路径,使用分割

6.4.驱动调试

  • 调试机-打开windbg左上角的 File然后点击Kernel Debug 然后再点击 COM ,设置如下图所示 ,然后点击确定

Windows_xp_win7-驱动编译与双虚拟机调试环境搭建插图45

  • 被调试机启动选择启用调试程序

Windows_xp_win7-驱动编译与双虚拟机调试环境搭建插图46

  • 被调试机启动驱动

Windows_xp_win7-驱动编译与双虚拟机调试环境搭建插图47

通过百度网盘分享的文件:windows_xp_win7驱动编译调试环境搭建.zip
链接:https://pan.baidu.com/s/1em90D0FNXebX007hk6pwuQ?pwd=9s2u
提取码:9s2u

七.参考链接

  • https://www.cnblogs.com/revercc/p/14609685.html

  • https://bbs.kanxue.com/thread-188471.htm

  • https://blog.csdn.net/fonx/article/details/79720490?spm=1001.2101.3001.6650.13&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-13-79720490-blog-104530361.235%5Ev43%5Epc_blog_bottom_relevance_base8&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-13-79720490-blog-104530361.235%5Ev43%5Epc_blog_bottom_relevance_base8&utm_relevant_index=20

  • https://blog.csdn.net/jmh1996/article/details/88382133

  • https://cloud.tencent.com/developer/article/1621329?sid_for_share=99125_3

  • https://bbs.kanxue.com/thread-261326.htm

  • https://bbs.kanxue.com/thread-251052.htm

  • https://blog.csdn.net/qq_42931917/article/details/108265848


4A评测 - 免责申明

本站提供的一切软件、教程和内容信息仅限用于学习和研究目的。

不得将上述内容用于商业或者非法用途,否则一切后果请用户自负。

本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。

如果您喜欢该程序,请支持正版,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。敬请谅解!

程序来源网络,不确保不包含木马病毒等危险内容,请在确保安全的情况下或使用虚拟机使用。

侵权违规投诉邮箱:4ablog168#gmail.com(#换成@)

相关文章

2025最新&模拟器微信小程序抓包&小程序反编译
新威胁组织GamaCopy模仿俄罗斯Gamaredon APT,针对俄语目标发起攻击
勒索软件利用隐秘SSH隧道攻击ESXi系统,实现C2通信
[Meachines] [Easy] GoodGames SQLI+Flask SSTI+Docker逃逸权限提升
BUUCTF-reverse wp(二)
xss总结

发布评论