0x00 前言

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

0x01 测试环境

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

0x02 环境搭建

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

1.虚拟机的配置

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

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

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

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保存,再次重启就会多出一个支持调试的启动选项.如图

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

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重新加载符号表,一般来说第一次都会联网下载符号表的,下载过程中由于某些文件变化符号表已经不维护,所以会出现部分找不到的情况,但基本影响不大,如果出现完全不能下载的情况,请参考之前的文章解决。下载好以后就可以双机调试了

MacOs/Liunx主机搭建windows平台双机调试环境的更多相关文章

  1. Windbg双机调试环境配置(Windows7/Windows XP+VirtualBox/VMware+WDK7600)

    简介:Windbg双机调试内核.驱动 下载软件: 下载Windbg(GRMWDK_EN_7600_1.ISO) 下载VirtualBox 5.2/VMware 12 一.安装WDK,这里要提一点的是D ...

  2. Windebug双机调试环境搭建

    Windebug双机调试环境搭建    开始进行内核编程/驱动编程的调试工作是非常烦人的,由于程序运行与内核层不受操作系统的管控,所以容易引起主机蓝屏和崩溃是常有的事.这也就使得内核程序的调试成了一大 ...

  3. [内核编程] Windebug双机调试环境搭建

    Windebug双机调试环境搭建    开始进行内核编程/驱动编程的调试工作是非常烦人的,由于程序运行与内核层不受操作系统的管控,所以容易引起主机蓝屏和崩溃是常有的事.这也就使得内核程序的调试成了一大 ...

  4. [01] HEVD 双机调试环境搭建

    [01] HEVD 双机调试环境搭建 span::selection, .CodeMirror-line > span > span::selection { background: #d ...

  5. windows下用eclipse+goclipse插件+gdb搭建go语言开发调试环境

    windows下用eclipse+goclipse插件+gdb搭建go语言开发调试环境   http://rongmayisheng.com/post/windows%E4%B8%8B%E7%94%A ...

  6. 转:WIN7上搭建Windows Phone 8 开发环境——VMware Workstation下Win8 “无法安装Hyper-V, 某个虚拟机监控程序正在运行”问题解决的办法

    转自:http://www.cnblogs.com/shaddock2013/p/3155024.html 最近在试着在Windows 7上搭建Windows Phone 8的开发调试环境,使用的是V ...

  7. WIN7上搭建Windows Phone 8 开发环境——VMware Workstation下Win8 “无法安装Hyper-V, 某个虚拟机监控程序正在运行”问题解决的办法

    最近在试着在Windows 7上搭建Windows Phone 8的开发调试环境,使用的是VMware Workstation + Win8 Pro的虚拟环境, 在漫长的WPexpress_full下 ...

  8. 搭建Go开发及调试环境(LiteIDE + GoClipse)

    搭建Go开发及调试环境(LiteIDE + GoClipse) -- Windows篇 这里以Windows7 64位为例,如果是32位环境需安装对应版本程序. 一.安装golang1.2.2 1.3 ...

  9. Setting up a EDK II build environment on Windows and Linux:搭建Windows和Linux开发环境[2.2]

    Setting up a EDK II build environment on Windows and Linux:搭建Windows和Linux开发环境[2.2] 2015-07   北京海淀区  ...

随机推荐

  1. SpringBoot框架:使用mybatis连接mysql数据库完成数据访问(二)

    一.导入依赖包 1.在创建项目时勾选: 勾选SQL中的JDBC API.MyBatis Framework.MySQL Driver,创建项目后就会自动配置和引入这些包. 2.在pom.xml文件中添 ...

  2. 龙芯3a4000办公机安装软件及美化记录

    1.硬件平台: CPU:龙芯3a4000 Linux内核版本:4.19.90-1.lns7.2.mips64el 操作系统:Debian 10(buster) 使用过龙芯3a3000和3a4000两款 ...

  3. JVM学习(九)volatile应用

    一.初认volatile 首先学习volatile关键字时,我们先简单的了解一下它能干啥: 工作内存与主内存同步延迟现象导致的可见性问题: 可通过synchronized或volatile关键字解决, ...

  4. 面试官:分库分表之后,id 主键如何处理?

    面试题 分库分表之后,id 主键如何处理? 面试官心理分析 其实这是分库分表之后你必然要面对的一个问题,就是 id 咋生成?因为要是分成多个表之后,每个表都是从 1 开始累加,那肯定不对啊,需要一个全 ...

  5. NX导入DWG失败

    给客户开发的NX导入DWG图纸功能,部分电脑偶尔出现导入失败的情况,且几乎没有规律可言.客户无法理解,坚持认为是代码的问题,毕竟使用的是我们二次开发的功能.我本机没有问题,在某些出问题的电脑上也尝试多 ...

  6. Layer层自定义

    keras允许自定义Layer层, 大大方便了一些复杂操作的实现. 也方便了一些novel结构的复用, 提高搭建模型的效率. 实现方法 通过继承keras.engine.Layer类, 重写其中的部分 ...

  7. 前端性能测试工具之PageSpeed Insights

    谷歌开发的一个免费的网页分析工具,在地址栏中输入被分析的网站 url 地址,点击分析 地址:https://developers.google.cn/speed/pagespeed/insights/ ...

  8. pycharm安装注意

    在安装pycharm时,一定要先去官网下载安装python新版. 安装python时候一定要选择自己熟悉的路径 在pycharm创建项目时编译器选择versions/3.8/bin/python3,这 ...

  9. MySQL-Atlas--读写分离架构

    一.Atlas简介 Atlas是由 Qihoo 360公司Web平台部基础架构团队开发维护的一个基于MySQL协议的数据中间层项目.它在MySQL官方推出的MySQL-Proxy 0.8.2版本的基础 ...

  10. Redis 4.0.2分布式锁的Java实现

    简介 Redis分布式锁算法有两种,一种是单个Redis实例下的,一种是多个Redis实例的Redlock算法. 官方推荐Redlock算法,但是这个算法需要比较多的Redis实例而且是完全互相独立, ...