环境:

真实机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进行双机调试相关推荐

  1. win10向VMware中的win7传文件

    win10向VMware中的win7传文件 前言 因为安装的win7是初始版本,不能安装VMware tools,所以选择以下方法来传文件 环境 物理机:win10 虚拟机:win7 在VMware的 ...

  2. 【双机调试】WinDbg+Win7虚拟机双机调试详细步骤

    一.下载安装配置虚拟机 1.下载安装 VMware Workstation Pro 本文只接受VMware虚拟机,搜索VMware Workstation 下载最新安装包,在本机安装.下载地址:Dow ...

  3. 2019-2-13 VMware中的Win10pro安装docker问题对应

    2019-2-13VMware中的Win10pro安装docker问题对应 在Win10pro版本中使用docker可以安装 Docker for Windows. 下载后,安装 安装完毕需要注销后重 ...

  4. Win7和Windbg的双机调试

    之前手动配置过XP和Windbg的双机调试,这次配置Win7和Windbg的双机调试,和XP不一样的是:Win7没有像Xp一样的boot.ini这样的引导文件.所以配置的时候采用命令行的方式进行开机引 ...

  5. 双机调试环境搭建 windbg + virtualkd

    双机调试环境搭建 1. 环境准备 2. 单独的windbg双机配置 2.1 设置GuestOS环境 2.2 设置HostOS环境 2.3 Windbg测试 3. 使用Virtualkd/Virtual ...

  6. win10怎么显示文件后缀_win10系统中使用win7照片查看器(无需下载安装)

    computer 安装好win10系统,整体UI设计相比较win7,在感官上提升不少程度,但win10默认下的图片查看器真的是不好用,下面我们就来手把手教你在win10系统中使用win7系统中使用的传 ...

  7. VMware 12虚拟机win7中添加摄像头

    vmware 12虚拟机win7中添加摄像头 第一步: 右键设置settings; 2.第二步: 选择USB 然后后面的√都勾上,如果是灰色的勾不上,先关掉虚拟机里的系统再勾上: 当然勾完记得点下面的 ...

  8. VMWARE中WIN7虚拟机安装VMWARE TOOLS提示“安装程序无法自动安装 Virtual Machine Communication Interface Sockets“解决方法

    系统补丁 链接:https://pan.baidu.com/s/1X5Cuw8WJ90QgkC-c6X5RWQ  提取码:v7om 里面有两个相同文件名的文件.其中,.cab后缀的可以直接使用,而在V ...

  9. VMware中安装win10教程

    目录 一,windows10系统下载地址: 二,在VMware中进行安装前的准备. 三,进入windows10安装界面. 一,windows10系统下载地址: 微软官方:下载 Windows 10 ( ...

最新文章

  1. linux搭建--centos使用qemu-kvm,libvirt搭建虚拟机,并搭建libvmi来虚拟机自省(四)
  2. 在Archlinuxarm上搭建Minecraft基岩服务器
  3. 今天的移动支付,还是很不安全[转]
  4. [转].NET 开源项目 Polly 介绍
  5. 关于ES6 Class语法相关总结
  6. 发那科程序全部输出_如何拷贝FANUC系统全部程序
  7. Ubuntu系统周立功CAN驱动安装及常见问题
  8. SpringBoot 简易拦截器实现
  9. 基于特征的真菌分解木材的理解
  10. python断言使用方法
  11. ER图(实体联系图)
  12. Java实现文件管理系统(附带源码)
  13. WPF 简易手绘笔迹支持回放的方法
  14. 阿里双11突遭断网断电!最惊险一幕刚刚曝光
  15. android 项目编译略过jni目录,在 flutter 上使用 c 代码 - (二) 无源码的项目
  16. Steam教育对儿童在幼儿园阶段概念理解
  17. python 路径格式化_吐血整理!140种Python标准库、第三方库和外部工具都有了!...
  18. 腾讯云个人账号如何多开注册8个新用户账号
  19. grep同时过滤多个条件
  20. 瑞吉外卖项目:移动端导入用户地址簿与菜品展示功能实现

热门文章

  1. 每个python对象都具有布尔值、下列是true的是_根据企业所得税法律制度的规定,下列固定资产中,可以计提折旧扣除的是()。A.以融资租赁方式租出...
  2. 游戏成元宇宙“主力军”:上半年收入占比达94%
  3. 大数据如何改变世界?不尽数据滚滚来
  4. Linux性能优化方案
  5. 扫雷 黑白版 C语言练习
  6. Vivo 华为设备 AudioManager做了什么
  7. 基础入门:如何在「星图地球开发者平台」创建团队和项目?
  8. 怎么制作一个属于自己家政公司的小程序
  9. Cordova 教程 学习步骤-从零基础开始
  10. 美团外卖:日订单量超1600万的自动化业务运维之路