MacOs/Liunx主机搭建windows平台双机调试环境

0x00 前言

本文的主要试用对象是Mac OS/Linux用户,对于想调试windows内核相关的一些东西时,须要搭建双机调试环境的一些记录。另外对于本机是windows的用户也彻底试用,windows搭建双机环境是会更简单一些,可是基本是同样的。html

0x01 测试环境

  • VMware 15
  • windows 7 x86 –> 调试机
  • windows xp –> 被调试机1
  • windws 7 x86 –> 被调试机2
  • Ubuntu 18.04 –> 物理机
  • windbg –> 调试器

0x02 环境搭建

环境搭建的核心主要在虚拟机的设置上,这块设置好了,后面就会比较顺利。shell

1.虚拟机的配置

虚拟机的安装在这里就不在叙述,安装好虚拟机之后,咱们打开virtual machine settings–>Add–>serial port–>finish,以下图所示windows

随后咱们选择Use socket(named pipe)选项,这里须要输入一个文件的位置来作socket链接的转储,至关于调试信息转存的中转站,这里只须要指定就能够,稍后会自动在所设置目录自动建立文件,我这里是com1文件,这里须要特别说明一下,在设置虚拟机的串行端口指定com1仍是com2这取决于serial port的端口号是几,默认状况下虚拟机添加了打印机 print,因此此处默认端口为2,我在测试时使用com2没成功,删除了虚拟机的打印机后,使用的com1端口能够成功。这台虚拟机是xp,是做为被调试机用的,因此咱们选择server,接着勾选I/O Mode,使此虚拟机支持cpu中断,以下图所示服务器

接着设置调试机,基本和上面的设置同样,区别是,此次是选择client,不勾选I/O Mode选项,以下图所示socket

Ok,到这里虚拟机的设置就完成了,接下来是被调试机的设置,咱们打开被调试机测试

2.被调试机的设置

这里先拿xp来讲一下,windows7及以上的系统设置和xp略有不一样,稍后会叙述.打开被调试机,win+R键入c:\boot.ini打开系统启动配置.而后添加一行配置,以下命令行

[boot loader]
timeout=30
default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /noexecute=optin /fastdetect
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional debug" /debug /debugport=com1 /baudrate=115200 /fastdetect

这里的debugport须要和刚才设置的文件的名字同样,这里也是指定咱们选中的串行接口。baudrate默认为115200,而后ctrl+s保存,再次重启就会多出一个支持调试的启动选项.如图debug

Windows Vista以后的系统,不在使用BOOT.INI文件,改成了使用Coot Configuration Data,其配置的原理也大同小异,下面以windows 7为例子,作一个示范3d

C:\Windows\system32>bcdedit.exe /copy {current} /d "windows 7 Debug with Serial"      #复制当前的启动入口

已将该项成功复制到 {2bd58bb9-12d9-11eb-b328-b016eb5db92e}。

C:\Windows\system32>bcdedit.exe /debug {2bd58bb9-12d9-11eb-b328-b016eb5db92e} on      #启动入口启动内核调试

操做成功完成。

C:\Windows\system32>bcdedit /dbgsettings serial DEBUGPORT:1 BAUDRATE:115200      #serial表示使用串口,对应上面xp的com1
操做成功完成。

C:\Windows\system32>bcdedit /dbgsettings      #检查上述的设置
debugtype               Serial
debugport               1
baudrate                115200
操做成功完成。

C:\Windows\system32>bcdedit      #查看Windoes的启动入口

Windows 启动管理器
--------------------
标识符                  {bootmgr}
device                  partition=C:
description             Windows Boot Manager
locale                  zh-CN
inherit                 {globalsettings}
default                 {current}
resumeobject            {2bd58bb5-12d9-11eb-b328-b016eb5db92e}
displayorder            {current}
                        {2bd58bb9-12d9-11eb-b328-b016eb5db92e}
toolsdisplayorder       {memdiag}
timeout                 30

Windows 启动加载器
-------------------
标识符                  {current}
device                  partition=C:
path                    \Windows\system32\winload.exe
description             Windows 7
locale                  zh-CN
inherit                 {bootloadersettings}
recoverysequence        {2bd58bb7-12d9-11eb-b328-b016eb5db92e}
recoveryenabled         Yes
osdevice                partition=C:
systemroot              \Windows
resumeobject            {2bd58bb5-12d9-11eb-b328-b016eb5db92e}
nx                      OptIn

Windows 启动加载器
-------------------
标识符                  {2bd58bb9-12d9-11eb-b328-b016eb5db92e}
device                  partition=C:
path                    \Windows\system32\winload.exe
description             windows 7 Debug with Serial
locale                  zh-CN
inherit                 {bootloadersettings}
recoverysequence        {2bd58bb7-12d9-11eb-b328-b016eb5db92e}
recoveryenabled         Yes
osdevice                partition=C:
systemroot              \Windows
resumeobject            {2bd58bb5-12d9-11eb-b328-b016eb5db92e}
nx                      OptIn
debug                   Yes

0x03 调试机的设置

打开调试机,安装好windbg。随后咱们复制一个新的桌面快捷方式,更名字(为了区分原来的快捷方式),而后右键-->属性-->目标在后面添加-b -k com:port=1,baud=115200图片以下调试

这时咱们须要重启被调试机,进入支持debug的启动选项,这时咱们观察windbg已经链接到了目标主机,以下图

0x04 设置内核调试用的符号表

在内核调试下,按g可以让目标主机继续运行,若是想让目标中断可选择调试器的debug–>Break选项,便可把控制权交还调试器,随后咱们加载内核调试须要的符号表,首先须要调试机联网,随后在调试器键入ctrl+s打开符号表路径设置,输入以下SRV*c:\symbols* https://msdl.microsoft.com/download/symbols这里的意思是告诉调试器,首先去c盘的symbols目录找符号表,若是找不到就联网到微软的符号表服务器远程下载,下载的文件一样会存到symbols目录方便下次使用.因此须要手动到c盘新建一个名字为symbols的空文件夹.随后在调试器的命令行输入.reload /f从新加载符号表,通常来讲第一次都会联网下载符号表的,下载过程当中因为某些文件变化符号表已经不维护,因此会出现部分找不到的状况,但基本影响不大,若是出现彻底不能下载的状况,请参考以前的文章解决。下载好之后就能够双机调试了

相关文章
相关标签/搜索