如何配置WinDbg和VMware实现内核的调试

news2025/1/15 6:26:25

设置 VMware 的虚拟串口

运行 VMware,首先将 Guest OS 系统电源关闭,这样才能修改该系统的虚拟机设置。
在这里插入图片描述
单击界面上的“编辑虚拟机设置”选项对虚拟机的属性进行设置。
单击“添加”按钮,打开 VMware 的 添加硬件向导 对话框
选择“串行端口”,并单击“ Next >”按钮
在这里插入图片描述
选择“ 使用命名的管道 ”,并单击“ Next >”按钮
第一个输入框中输入“ \\.\pipe\com_1”,表示该虚拟串口将要映射到 Host OS 的管道名称。
第二个框中选择“该端是服务器”,表示 Guest OS 是被调试的系统
第三个框中选择“另一端是应用程序”,表示 Host OS 将使用一个调试软件来作为管道的另一端。
设备状态,勾选“启动时连接”,表示在开启虚拟机操作系统时,与这个虚拟设备(串口),建立连接。单击“ 完成”,按钮
在这里插入图片描述
此时,可以看到 Hardware 列表中已经有了一个新的设备, 串行端口(使用管道名:
\\.\pipe\com_1)。这里还要勾选右侧“I/O 模式”中的“ 轮询时主动放弃CPU ”选项
至此就完成了对 VMware 串口的设置。
在这里插入图片描述

修改 Guest OS 的启动配置文件

在刚才设置完虚拟串口后,这里需要重启虚拟机中的 Guest OS。进入系统后,我们要对系统的启动配置文件作一些修改,才能使 Host OS 中的 WinDbg 调试该系统。
Windows 20 00、 Windows XP 、 Windows 200 3 系统的启动配置文件位于系统盘根目录下的 boot.ini,该文件默认是有保护属性的。
执行 attrib -s -h -r c:\boot.ini 去除保护属性,然后开始编辑该文件,一个默认的 boot.ini 文件
在这里插入图片描述
将其修改为
在这里插入图片描述
最后,修改完 boot.ini 文件后,执行 attrib +s +h +r c:\boot.ini 恢复该文件的保护属性。

Windows Vista以后win7等操作

从 Windows V ista 开始,考虑到 boot.ini 文件很容易被恶意软件所修改,因此不再使用 boot.ini 文件,而是使用 Boot Configuration Data(BCD)。修改 BCD,需要启动一个管理员权限的命令行窗口。然后使用 bcdedit 命令来编辑 BCD。首先将当前启动入口复制一份,

bcdedit /copy {current} /d "Win7 Debug"

在这里插入图片描述
其中双引号中的字符串(“Win7 Debug” )为新启动入口的名称。如果执 行 成 功 , 会 得 到 新 启 动 入 口 的 GUID , 即 图中 的 “ {ad2983ae-3010-11ee-b297-b234ec8321b1}”,用来唯一标识这个启动入口。

接着,我们需要对这个启动入口,启用内核调试

bcdedit /debug {ad2983ae-3010-11ee-b297-b234ec8321b1} on

在这里插入图片描述
BCD 中有一套全局的调试设置,使用 bcdedit /dbgsettings 可以观察和修改这套全局设置。
在这里插入图片描述
默认的全局调试设置中,调试类型为 Serial,调试端口为 1,波特率为 115200,这已经是我们需要的设置了。

当然也可以通过如下命令再次设置为串口调试

bcdedit /dbgsettings serial DEBUGPORT:1 BAUDRATE:115200

如果希望为某个自启动项设置单独的调试选项,那么可以使用 bcdedit /set 命令, 例如:

bcdedit /set {ad2983ae-3010-11ee-b297-b234ec8321b1} debugtype serial
bcdedit /set {ad2983ae-3010-11ee-b297-b234ec8321b1} debugport 1
bcdedit /set {ad2983ae-3010-11ee-b297-b234ec8321b1} baudrate 115200

至此虚拟机中的 Guest OS 就设置好了,先不要重启,当下一步设置好 WinDbg 后,再重新启动。

设置 WinDbg 参数

首先在桌面或快速启动栏中创建一个 WinDbg 的快捷方式,然后修改这个快捷方式属性中
的“快捷方式”。

将“快捷方式”页中的“目标(T)”框中加上以下参数:

-b -k com:port=\\.\pipe\com_1,baud=115200,pipe

在这里插入图片描述

重启虚拟机中的 Guest OS

重启虚拟机,将会看到如图所示两个系统入口,选择“ Microsoft W indows XP Professional – debug”,然后安下回车键。
在这里插入图片描述
回车后,会发现系统貌似卡住一样,这其实是系统在等待串口另一端的调试程序与其建立连接。

启动 WinDbg

这时启动刚才设置好的 WinDbg 快捷方式,发现很快 WinDbg 就连上虚拟机中的 Guest OS了,如果很长时间没有连接上的话, 可以单击 WinDbg 菜单中的"Debug"->“Kernel Connection”->“Resynchronize”。连接后的效果
在这里插入图片描述
接下来就可以通过 WinDbg 来调试虚拟机中的 Guest OS 了

输入命令g即可开启windows
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1287842.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

第17章 匿名函数

第17.1节 匿名函数的基本语法 [捕获列表](参数列表) mutable(可选) 异常属性 -> 返回类型 { // 函数体 }语法规则:lambda表达式可以看成是一般函数的函数名被略去,返回值使用了一个 -> 的形式表示。唯一与普通函数不同的是增加了“捕获列表”。 …

Python 调用企业微信群机器人发送消息及文件

Python 操作企业微信群机器人。 企业微信群创建机器人 : 安装 requests json : pip install requests pip install json发送消息(markdown) import requests import json# 企业微信机器人发送文字 def send_markdown (message, …

7.Vue UI库

7.Vue UI库 7.1移动端常用的UI库 (1) Vant:Vant 4 - A lightweight, customizable Vue UI library for mobile web apps.A lightweight, customizable Vue UI library for mobile web apps.https://vant-ui.github.io/vant/#/zh-CN &#xf…

分类预测 | Matlab实现OOA-CNN-SVM鱼鹰算法优化卷积支持向量机分类预测

分类预测 | Matlab实现OOA-CNN-SVM鱼鹰算法优化卷积支持向量机分类预测 目录 分类预测 | Matlab实现OOA-CNN-SVM鱼鹰算法优化卷积支持向量机分类预测分类效果基本描述程序设计参考资料 分类效果 基本描述 1.Matlab实现OOA-CNN-SVM鱼鹰算法优化卷积支持向量机分类预测&#xff0…

在AWS CodeBuild中更新Lambda导致进程被占用(status error 255)的解决方案

大纲 1 问题描述1.1 错误提示1.2 错误分析和解决方案 2 解决方法2.1 YMAL文件样例 参考文献 1 问题描述 在Lambda的部署实践中,我们尝试使用CodeBuild将代码更新到Lambda函数中。在这个过程中,偶尔会触发一个不太常见的状态:Lambda状态一直是…

用友NC Cloud FileParserServlet反序列化RCE漏洞复现

0x01 产品简介 用友 NC Cloud 是一种商业级的企业资源规划云平台,为企业提供全面的管理解决方案,包括财务管理、采购管理、销售管理、人力资源管理等功能,实现企业的数字化转型和业务流程优化。 0x02 漏洞概述 用友 NC Cloud FileParserServlet接口存在反序列化代码执行漏…

IDEA版SSM入门到实战(Maven+MyBatis+Spring+SpringMVC) -Mybatis核心配置详解

第一章 Mybatis核心配置详解【mybatis-config.xml】 1.1 核心配置文件概述 MyBatis 的配置文件包含了会深深影响 MyBatis 行为的设置和属性信息。 1.2 核心配置文件根标签 没有实际语义,主要作用:所有子标签均需要设置在跟标签内部 1.3 核心配置文件…

设计模式之结构型模式(适配器、桥接、组合、享元、装饰者、外观、代理)

文章目录 一、结构型设计模式二、适配器模式三、桥接模式四、组合模式五、享元模式六、装饰者模式七、外观模式八、代理设计模式 一、结构型设计模式 这篇文章我们来讲解下结构型设计模式,结构型设计模式,主要处理类或对象的组合关系,为如何…

中文手写数字数据识别

实验环境 python3.7torch1.13.1cu117 torchaudio0.13.1cu117 torchvision0.14.1数据下载地址:Mnist中文手写数字数据集Python资源-CSDN文库 这些汉字包括: 零、一、二、三、四、五、六、七、八、九、十、百、千、万、亿 总共15个汉字,分别…

HarmonyOS学习--了解基本工程目录

1.工程级目录 工程的目录结构如下: 其中详细如下: AppScope中存放应用全局所需要的资源文件。entry是应用的主模块,存放HarmonyOS应用的代码、资源等。oh_modules是工程的依赖包,存放工程依赖的源文件。build-profile.json5是工…

Scrapy爬虫数据存储为JSON文件的解决方案

什么是JSON文件 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人们阅读和编写,同时也易于机器解析和生成。它基于JavaScript Spark语言的一个子集,但独立于Smashing语言,因此在许多中…

C语言每日一题(46)整数转罗马数字

力扣网12 整数转罗马数字 题目描述 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。 字符 数值 I 1 V 5 X 10 L 50 C 100 D …

Get职场新知识:做分析,用大数据分析工具

为什么企业每天累积那么多的数据,也做数据分析,但最后决策还是靠经验?很大程度上是因为这些数据都被以不同的指标和存储方式放在各自的系统中,这就导致了数据的分析口径和标准不一致,无法在同一个分析软件上做综合分析…

nodejs微信小程序+python+PHP在线购票系统的设计与实现-计算机毕业设计推荐

目 录 摘 要 I ABSTRACT II 目 录 II 第1章 绪论 1 1.1背景及意义 1 1.2 国内外研究概况 1 1.3 研究的内容 1 第2章 相关技术 3 2.1 nodejs简介 4 2.2 express框架介绍 6 2.4 MySQL数据库 4 第3章 系统分析 5 3.1 需求分析 5 3.2 系统可行性分析 5 3.2.1技术可行性:…

Vue自定义hook函数

hook 本质是一个函数,可以把 setup 函数中使用的 Composition API 进行封装。 hook 类似于 Vue2 中的 mixin 混合。 自定义 hook 的优势:复用代码,让 setup 中的逻辑更加清晰易懂。 自定义hook函数: 1、在 src 目录下创建 hooks…

codeforces 题目 Chtholly‘s request

目录 题目: 题目描述: 思路: AC代码: 题目: 题目描述: zcy数:(形如:11,1221,103301) ①是回文数 ②数位个数是偶数 给你两个整数 k…

flask项目的基本配置

1. 目录结构 2. 入口文件app.py from manger import create_app, db from flask_migrate import Migrate from manger import models# 传入settings参数,开发版本“develop”,线上版本“product” app create_app(develop)# 数据库设置 migrate Migra…

Git 分支合并时 Merge, Rebase, Squash 的使用场景

前言 Git 的分支设计大大提升了并行开发的能力,但相应的,也就要解决如何进行分支合并。毕竟分久必合,最终还是要把大家的工作合并起来,进行统一发布的。在合并时,通常有三种操作: Merge commitsRebaseSqu…

vivado时序方法检查2

TIMING-4 &#xff1a; 时钟树上的基准时钟重新定义无效 时钟树上的时钟重新定义无效。基准时钟 <clock_name> 是在时钟 <clock_name> 下游定义的 &#xff0c; 并覆盖其插入延迟和/ 或波形定义。 描述 基准时钟必须在时钟树的源时钟上定义。例如 &#xff0…

计网Lesson7 - 超网与路由概述

文章目录 一、构造超网1 概念解析2 路由聚合判断网段 3 实例演示几个配置问题&#xff1a;传输过程中的若干问题包的问题传输时丢包的问题 4 判断是子网还是超网 二、路由概述1. 路由的作用2. 多个网段进行联络3. 数据包的传输 一、构造超网 1 概念解析 与划分子网相反&#…