win10使用winDbg与VMware中的win7进行双机调试
环境:
真实机windows10
windows10内安装winDbg
windows10内安装VMware
VMware内安装windows7
步骤:
1.windows内安装windbg,不知道什么原因microsoft store中的windbgpreview安装不上,于是就用了老版本的windbg。
2.vmware添加串口
不知道为什么,创建的串口叫串行端口2,这个数字很重要,要记住,使用命名的管道要\\.\pipe\前缀,后面的名字可以自己写一个短的好记的
3.Windows7内配置调试参数
bcdedit根据default生成一个新的启动项,用来调试,其实通过bcdedit /enum并没有看到default这个名字
bcdedit /copy {default} /d "vmdebug"
已将该项成功复制到 {7985b4ec-581d-11ec-bee9-8214e8b021aa}。
复制一下这个id,粘贴到真实机的文档里面。
此时重启的话会有多一个启动项选择,但是看不到,需要设置timeout,让系统停留在启动项的选择界面
bcdedit /timeout 10
设置timeout会在启动项选择界面停留10秒钟,超过10秒钟则进入默认启动项,
重启后从vmdebug选项进入,设置vmdebug为调试模式,以免影响默认启动方式的系统环境,
bcdedit /dbgsettings serial baudrate:115200 debugport:2
注意这个debugport,就是创建虚拟机串口的端口号,从创建时的截图看,串行端口2,debugport应该就是2,如果不知道。那只能先设置一个,然后连不上的时候再重新输入命令修改串口
bcdedit /debug {ID} ON
ID是从bcdedit /copy创建出vmdebug后生成的id,也可以通过bcdedit /enum查询
重启,停在开机启动项
4.启动windbg
直接启动windbg的话连不上虚拟机,需要添加参数,用命令行启动windbg
windbg.exe -b -k com:pipe,port=\\.\pipe\vmdbg_win7,resets=0
或者新建一个windbg的快捷方式,然后编辑目标,把参数加到目标中去
windbg启动会卡住,等待管道对应的虚拟机中的系统启动
此时vmware启动到启动项选择界面
焦点停留在vmdebug,此时可以直接敲回车进系统,也可以按F8,禁用驱动的数字签名
此时windbg就会连接上
windows7系统也会卡住,按g表示继续执行,系统会继续走开机流程,
如果提示找不到符号,可以在 File->symbol file path中添加url
SRV*c:\mysymbol*http://msdl.microsoft.com/download/symbols
勾选reload
点击确定
如果有源码的话,可以在File->source file path中添加,便于添加断点
系统走开机流程后windbg进入busy状态,此时不接受命令输入,除非按ctrl+break,或者菜单中debug->break,break之后系统会再次卡住,接受命令行调试
常用命令
lm查看当前加载了哪些模块
系统启动的不同阶段加载的模块不一样,比如此时系统还没加载abc.sys,可以提前设置abc.sys的driverEntry处设置断点
bp+address/符号地址 在address指令处加断点,但是这个地址所在的模块必须已经被加载bu+address/符号地址 在address指令处加断点,但是这个地址所在的模块可以没有被加载,即延迟加载的模块。
此时应该用bu命令,如果模块加载了就过了DriveEntry
bu abc!DriverEntry
abc驱动加载起来之后就会断点停在DriverEntry,这个时候输入dv命令是没用的,
kd> dvDriverObject = 0xffff0010`03ecc8d3RegistryPath = 0xffff0040`00000030
uszDeviceString = struct _UNICODE_STRING "䆰Ȑ婢???"pDeviceObject = 0xfffff880`00000000
uszDriverString = struct _UNICODE_STRING ""
此时可以(step over)F10往下面运行几行代码
或者(Run to cursor)Ctrl+F10,或者F7
然后执行dv,
比如看到变量DriverObject
再往下执行几行
kd> dvDriverObject = 0xfffffa80`021041b0RegistryPath = 0x00000000`00000000
uszDeviceString = struct _UNICODE_STRING "\DosDevices\abc"pDeviceObject = 0xfffffa80`02106200
uszDriverString = struct _UNICODE_STRING "\Device\abc"
dt DriverObject
查看变量的值,如果变量的值看不到,可以往下运行几行
kd> dt DriverObject
Local var @ 0xfffff880009ae5a0 Type _DRIVER_OBJECT*
0xfffffa80`021041b0 +0x000 Type : 0n4+0x002 Size : 0n336+0x008 DeviceObject : 0xfffffa80`02106200 _DEVICE_OBJECT+0x010 Flags : 2+0x018 DriverStart : 0xfffff880`04468000 Void+0x020 DriverSize : 0xf000+0x028 DriverSection : 0xfffffa80`02104b20 Void+0x030 DriverExtension : 0xfffffa80`02104300 _DRIVER_EXTENSION+0x038 DriverName : _UNICODE_STRING "\Driver\abc"+0x048 HardwareDatabase : 0xfffff800`04393558 _UNICODE_STRING "\REGISTRY\MACHINE\HARDWARE\DESCRIPTION\SYSTEM"+0x050 FastIoDispatch : (null) +0x058 DriverInit : 0xfffff880`044744f8 long abc!GsDriverEntry+0+0x060 DriverStartIo : (null) +0x068 DriverUnload : (null) +0x070 MajorFunction : [28] 0xfffff800`03eb31d4 long nt!IopInvalidDeviceRequest+0
代码其他函数设置断点方式也是如此,如果要取消断点,需要用bl命令先看看有哪些断点
kd> bl0 e fffff880`04474008 [f:\xx.c @ 370] 0001 (0001) abc!DriverEntry1 e fffff880`04474008 [f:\xx.c @ 370] 0001 (0001) abc!DriverEntry2 e fffff880`0446a5c4 [f:\xx.c @ 1885] 0001 (0001) abc!MyDeviceIoControl
0,1,2表示断点,e表示enable状态,d表示disable状态
假如现在要关闭MyDeviceIocontrol断点,需要执行bd 2
kd> bd 2
kd> bl0 e fffff880`04474008 [f:\xx.c @ 370] 0001 (0001) abc!DriverEntry1 e fffff880`04474008 [f:\xx.c @ 370] 0001 (0001) abc!DriverEntry2 d fffff880`0446a5c4 [f:\xx.c @ 1885] 0001 (0001) abc!MyDeviceIoControl
此时2的状态就变为d了
bc是清除断点,执行bc 2之后就看不到2了
win10使用winDbg与VMware中的win7进行双机调试相关推荐
- win10向VMware中的win7传文件
win10向VMware中的win7传文件 前言 因为安装的win7是初始版本,不能安装VMware tools,所以选择以下方法来传文件 环境 物理机:win10 虚拟机:win7 在VMware的 ...
- 【双机调试】WinDbg+Win7虚拟机双机调试详细步骤
一.下载安装配置虚拟机 1.下载安装 VMware Workstation Pro 本文只接受VMware虚拟机,搜索VMware Workstation 下载最新安装包,在本机安装.下载地址:Dow ...
- 2019-2-13 VMware中的Win10pro安装docker问题对应
2019-2-13VMware中的Win10pro安装docker问题对应 在Win10pro版本中使用docker可以安装 Docker for Windows. 下载后,安装 安装完毕需要注销后重 ...
- Win7和Windbg的双机调试
之前手动配置过XP和Windbg的双机调试,这次配置Win7和Windbg的双机调试,和XP不一样的是:Win7没有像Xp一样的boot.ini这样的引导文件.所以配置的时候采用命令行的方式进行开机引 ...
- 双机调试环境搭建 windbg + virtualkd
双机调试环境搭建 1. 环境准备 2. 单独的windbg双机配置 2.1 设置GuestOS环境 2.2 设置HostOS环境 2.3 Windbg测试 3. 使用Virtualkd/Virtual ...
- win10怎么显示文件后缀_win10系统中使用win7照片查看器(无需下载安装)
computer 安装好win10系统,整体UI设计相比较win7,在感官上提升不少程度,但win10默认下的图片查看器真的是不好用,下面我们就来手把手教你在win10系统中使用win7系统中使用的传 ...
- VMware 12虚拟机win7中添加摄像头
vmware 12虚拟机win7中添加摄像头 第一步: 右键设置settings; 2.第二步: 选择USB 然后后面的√都勾上,如果是灰色的勾不上,先关掉虚拟机里的系统再勾上: 当然勾完记得点下面的 ...
- VMWARE中WIN7虚拟机安装VMWARE TOOLS提示“安装程序无法自动安装 Virtual Machine Communication Interface Sockets“解决方法
系统补丁 链接:https://pan.baidu.com/s/1X5Cuw8WJ90QgkC-c6X5RWQ 提取码:v7om 里面有两个相同文件名的文件.其中,.cab后缀的可以直接使用,而在V ...
- VMware中安装win10教程
目录 一,windows10系统下载地址: 二,在VMware中进行安装前的准备. 三,进入windows10安装界面. 一,windows10系统下载地址: 微软官方:下载 Windows 10 ( ...
最新文章
- linux搭建--centos使用qemu-kvm,libvirt搭建虚拟机,并搭建libvmi来虚拟机自省(四)
- 在Archlinuxarm上搭建Minecraft基岩服务器
- 今天的移动支付,还是很不安全[转]
- [转].NET 开源项目 Polly 介绍
- 关于ES6 Class语法相关总结
- 发那科程序全部输出_如何拷贝FANUC系统全部程序
- Ubuntu系统周立功CAN驱动安装及常见问题
- SpringBoot 简易拦截器实现
- 基于特征的真菌分解木材的理解
- python断言使用方法
- ER图(实体联系图)
- Java实现文件管理系统(附带源码)
- WPF 简易手绘笔迹支持回放的方法
- 阿里双11突遭断网断电!最惊险一幕刚刚曝光
- android 项目编译略过jni目录,在 flutter 上使用 c 代码 - (二) 无源码的项目
- Steam教育对儿童在幼儿园阶段概念理解
- python 路径格式化_吐血整理!140种Python标准库、第三方库和外部工具都有了!...
- 腾讯云个人账号如何多开注册8个新用户账号
- grep同时过滤多个条件
- 瑞吉外卖项目:移动端导入用户地址簿与菜品展示功能实现
热门文章
- 每个python对象都具有布尔值、下列是true的是_根据企业所得税法律制度的规定,下列固定资产中,可以计提折旧扣除的是()。A.以融资租赁方式租出...
- 游戏成元宇宙“主力军”:上半年收入占比达94%
- 大数据如何改变世界?不尽数据滚滚来
- Linux性能优化方案
- 扫雷 黑白版 C语言练习
- Vivo 华为设备 AudioManager做了什么
- 基础入门:如何在「星图地球开发者平台」创建团队和项目?
- 怎么制作一个属于自己家政公司的小程序
- Cordova 教程 学习步骤-从零基础开始
- 美团外卖:日订单量超1600万的自动化业务运维之路