从 Linux 调试 Windows 内核

2023-12-28

我曾经使用调试 Windows 内核虚拟KD, WinDBG和一个虚拟机。

最近我得到了一台Linux机器,现在我想知道当你的主机无法运行时调试Windows内核的最简单方法是什么虚拟KD/WinDBG*?

我假设该解决方案需要两个虚拟机,但我宁愿在我的实际计算机上托管两个实例,而不是让一个实例驻留在另一个虚拟实例中......

有办法让它发挥作用吗?

提前致谢!

*出于稳定性原因,葡萄酒是最后的手段......


解决了!基本上,我最终使用了two(虚拟盒)VMs模拟一个串行连接(零调制解调器电缆)通过Unix 域套接字(在主机上)。欲了解更多信息,请阅读以下内容:

硬件设置*:

  • Debuggee:
    • 确保机器已关闭并编辑串口设置。
    • Enable Port 1,并按如下方式指定值: 端口号:COM1,端口模式:主管道,创建管道:未选中(客户端),端口/文件路径:/tmp/win_link.
  • Debugger:
    • 与上面相同(使用相同的路径),只是这次创建管道应该是Checked(服务器)。

调试器设置:

  • 运行WinDBG并按Ctrl+K调用内核调试.
  • in COM,输入:波特率:115200,端口:COM1,重置:0 并验证Pipe和重新连接是未经检查的(重要的)。
  • 您将看到以下输出:Opened \\\\.\com1 Waiting to reconnect...

调试器设置:

  • Run /port com1 /baud 115200 /id 1 上的 bootcfg /debug。要验证,请运行bootcfg.**
  • Reboot.
  • 在启动阶段的早期,另一台机器上的 WinDBG 应该检测到调试程序正在运行。

*假设使用 VirtualBox。 VMWare/KVM 用户按照类似的步骤可能会获得相同的结果。另外,有关更多信息,请参阅VirtualBox 文档 https://www.virtualbox.org/manual/ch03.html#serialports.

**假设访客使用的是 Windows XP。更高版本包括bcdedit,可以按照描述使用here http://msdn.microsoft.com/en-us/library/windows/hardware/ff556867%28v=vs.85%29.aspx.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 Linux 调试 Windows 内核 的相关文章

  • 是否有适用于 Windows 平台的轻量级、可编程 Sandbox API? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 为了在家运行不受信任的代码 我使用 VMWare 虚拟机 我想找到一个替代的轻量级沙箱 API 来运行
  • 如何增加 Google Cloud 虚拟机的大小? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 Google Cloud 如何处理增加或减少虚拟机大小 即更改 RAM 和 CPU 选项 谢谢 这种行为现在已经改变 实例在创建之前和之后
  • WinDbg——TraceListener 和饱和线程池

    我有一个多线程 NET Windows 服务 它间歇性地挂起 可能每两周 24 7 运行一次 当发生挂起时 线程池完全饱和 因为对我们的自定义跟踪侦听器的调用由于某种原因开始阻塞 根据 Windbg 的说法 有问题的代码中没有任何锁 也没有
  • Windbg 设置取决于调用堆栈的条件断点

    问题 我需要制作一个脚本或表达式 如果调用堆栈上的某处是具有特定名称的函数 则该脚本或表达式不会中断 具体问题 如何将调用堆栈上的函数获取到字符串列表 Example Module MyFunctionWithConditionalBrea
  • 调用栈和反汇编疑问

    三大疑点 1 假设我得到如下调用堆栈 user32 dll InternalCallWinProc 20 0x28 bytes user32 dll UserCallWinProcCheckWow 32 0xb7 bytes user32
  • vagrant - Vagrantfile:同步多个文件夹

    我已尝试以下方法将多个文件夹从主机同步到来宾计算机 但只有一个文件夹正在同步 即后一个文件夹 config vm synced folder host site1 var www site1 config vm synced folder
  • Java:一行中多个++-增加。第一个是哪一个?

    嘿 我有以下两行代码 result i temp i temp i 1 temp i 2 i 2 我想知道这行代码是否会执行相同的操作 result i temp i temp i temp i 我可以确定吗EVERYVM会从左到右处理该行
  • Google Cloud VM 当 sudoing 要求输入密码时

    我一直在使用 Google Cloud debian 虚拟机 并且使用 sudo 执行超级用户任务完全没有问题 sudo 不要求输入密码 今天我像往常一样通过 SSH 连接 当我尝试须藤某事它开始要求输入密码 We trust you ha
  • 实时调试堆栈溢出

    我有一个托管代码 Windows 服务应用程序 由于托管 StackOverFlowException 该应用程序在生产中偶尔会崩溃 我知道这一点是因为我在崩溃模式下运行了 adplus 并使用 SoS 事后分析了崩溃转储 我什至附加了 W
  • 如何阻止 Windbg 成为交互式调试器?

    正确的撤消方法是什么Windbg I在 Vista Win7 上 难道只是删除 HKEY LOCAL MACHINE SOFTWARE Microsoft Windows NT CurrentVersion AeDebug 中的注册表项那么
  • 如何在 Windows Azure 中连接 2 个虚拟机以实现两层架构?

    如何在 Windows Azure 中创建 2 个连接的虚拟机以便能够部署两层架构解决方案 让我澄清一下这个场景 目前我在 Windows Azure 中使用 1 个虚拟机 其中安装了 SQL Server 2008 DB 和 ASP NE
  • 如何将windbg命令重定向到文件而不在windbg控制台上回显输出?

    logopen不是答案 因为它让命令输出到windbg控制台 例如 sosex dumpgen 2产生大量输出 我不想在调试器控制台中看到这些输出 现在我正在使用以下内容 shell i ci dumpgen 2 cmd c more gt
  • Docker Tooling for Eclipse - 如何连接到虚拟机内运行的 Docker 守护进程

    我有一个 docker 守护进程 引擎在里面运行guest Ubuntu 虚拟机 并根据适用于 Eclipse 的 Docker 工具 http tools jboss org blog 2015 03 30 Eclipse Docker
  • 为什么我无法访问 Google Compute Engine 虚拟机?

    我无法访问 Google 计算引擎 GCE 虚拟机 GCE INSTANCE NAME 与 Google Cloud SDK gcloud gcloud compute project GCP PROJECT ID ssh zone GCE
  • LOH 碎片 - 2015 年更新

    有大量有关 NET LOH 的信息 并且已在各种文章中进行了解释 不过 有些文章似乎缺乏一点精确性 过时的信息 In Brian Rasmussen 的回答 2009 Microsoft 项目经理 https stackoverflow c
  • WinDbg:APPLICATION_HANG_WRONG_SYMBOLS

    我对 WinDbg 还很陌生 我正在尝试找到一个导致我的应用程序无缘无故挂起的错误 我不确定我做的事情是否正确 但我知道我需要系统 dll 以及我正在调试的 exe 的符号 因此 我这样设置符号路径 srv c websymbols htt
  • 分析 Windbg 中的故障转储

    我正在使用第三方闭源 API 它会抛出一个异常 指出 所有命名管道都忙 我想进一步调试 而不是单步调试 这样我就可以真正了解幕后发生的事情 我使用 WinDbg 转储了这个过程 我现在应该使用什么命令来分析此转储 Thanks 您可以开始执
  • 分析 Windbg 中 !threadpool 和 !threads 的输出

    我已经在四台服务器上生成了转储 并正在分析 threadpool 和 threads 的输出 我注意到以下输出大致一致 0 024 gt threadpool CPU utilization 0 Worker Thread Total 2
  • 如果 WinDbg 附加断点,则驱动程序加载/卸载失败

    我刚刚开始进行驱动程序开发 对于一些加载 卸载和调试的实验 我编写了以下简单的驱动程序 include
  • 将 Vagrant VM 存储在自定义文件夹中

    我想指定 Vagrant 将存储我的虚拟机的文件夹 我只需要一台虚拟机 所以我不想修改 VirtualBox xmldefaultMachineFolder或改变VBOX USER HOME环境变量 在 Vagrantfile 中正确的做法

随机推荐

  • 尝试同时编译多个 CUDA 文件时出现链接错误 LNK2005

    我有一个 CUDA 程序 可以正常工作 但目前全部写在一个文件中 我想将这个大文件分成几个较小的文件 以便更容易维护和导航 新的结构是 foo cuh foo cu bar cuh bar cu main cu The cuh头文件包含结构
  • 我想在 Yup 中转换值,但 Formik 没有返回正确的值

    我在表单 电子邮件 中有一个值 我想将其转换为小写 我在 Yup 中有一个转换正在工作 但 Formik 没有显示小写值 如何才能使当我以大写形式输入电子邮件时 它会自动转换为小写形式 这是我的代码 import React from re
  • 无法终止 SPID“事务回滚正在进行中”

    我的数据库中有一条处于永久回滚模式的未提交语句 当我尝试终止与此语句关联的 SPID 时 出现以下错误 事务回滚正在进行中 预计回滚完成 0 预计剩余时间 0 秒 此未提交的语句导致用户无法查看数据库的表 视图和过程树 如何停止这个 SPI
  • 在运行时加载 MP3 文件

    我正在尝试使用在运行时加载 mp3 文件WWW http docs unity3d com ScriptReference WWW htmlUnity中提供的类 我没有收到任何错误 但在处理歌曲后我无法播放音乐 我到处都找过了 但找不到任何
  • 在构造函数中设置变量数组的最小大小

    因此 我的编程教授希望我编写一个 Kingdom 类 其变量名至少有 12 个字符长 通常情况下 如果最小 12 个字符的不变量被破坏 人们只需使用 String 名称变量和错误消息来实现此类 就像 Java 中的这样 import jav
  • 马尔可夫链聊天机器人如何工作?

    我正在考虑使用马尔可夫链之类的东西创建一个聊天机器人 但我不完全确定如何让它工作 据我了解 您可以根据给定单词和后面的单词的数据创建一个表格 在训练机器人时是否可以附加任何类型的概率或计数器 这是个好主意吗 问题的第二部分是关键字 假设我已
  • lldb:异常断点(相当于gdb的catch throw)

    我正在尝试使用 lldb 进行 C 调试 如果抛出异常 我想停止 就像 gdb 的那样catch throw 并且我在 lldb 文档中找不到等效项 Use breakpoint set E c 打破所有异常并且breakpoint set
  • 将 JScrollPane 添加到 JLabel

    我似乎不知道如何添加JScrollPane to a JLabel The JLabel我正在使用的是一个长格式的 HTML 字符串 请帮忙 area new JLabel JScrollPane scroller new JScrollP
  • 如何运行指向 jar 的 TestNG 测试

    我有一个 Jar文件包含在 TestNG 测试上运行所需的文件 我想在该 Jar 文件中运行特定的 xml 文件 我的要求是是否可以执行指向 Jar文件如果是的话我该怎么做 您可以使用 xmlpathinjar suites GroupBa
  • 如何确定谁更改了文件?

    在 Windows 中 如何以编程方式确定上次更改或删除文件的用户帐户 我知道设置对象访问审核可能是一个选项 但如果我使用它 我就会遇到尝试将审核日志条目与特定文件匹配的问题 听起来复杂而混乱 我想不出任何其他方法 那么有人对这种方法或任何
  • 如何获取 PowerShell 字符串中最后一次出现的字符的索引?

    我想从 PowerShell 中的以下字符串获取最后一个 出现的索引 以便修剪 Activity 单词并保留它 string C cmb Trops TAX Auto Activity 我正在将代码从 VBScript 转换为 PowerS
  • 从 IEnumerable 中的任意点访问一系列元素

    我有这个方法 private IEnumerable
  • Laravel Jobs 不允许序列化“Closure”

    我想将数据发送到 NewsletterStore 作业 但它因以下错误而失败 有什么建议么 我还尝试删除 SerializesModels Models 特征 没有任何成功 Error Exception Serialization of
  • 如何在 Julia 中逐行读取文件?

    如何打开文本文件并逐行读取它 我对两种不同情况的答案感兴趣 一次获取数组中的所有行 一次处理每一行 对于第二种情况 我不想一次将所有行保留在内存中 将文件作为行数组一次性读入内存只需调用readlines功能 julia gt words
  • ASP.NET Core MVC 2.0 中基于路径的身份验证

    在 ASP NET Core MVC 1 1 中 我们有基于路径的身份验证 如下所示 public void Configure IApplicationBuilder app IHostingEnvironment env ILogger
  • 为什么 git-for-each-ref 无法正确排序标签?

    当我有一个包含轻量级标签和带注释标签的存储库时 git for each ref似乎只对其中一组进行排序 我想修改我的通话for each ref获得对所有标签进行排序并将它们混合在输出中的输出 例如 bash 3 2 git tag gt
  • C 反转字符串函数得到奇怪的输出

    我试图理解指针并制作一个反向字符串函数 code include
  • 批量:将txt文件中的文件复制到一个文件夹中

    我正在尝试创建一个批处理文件 将文本文件中列出的多个文件复制到新文件夹中 我发现了几个与此相关的线程 但我仍然无法使批处理正常工作 我遇到的问题是txt中列出的文件都位于不同的源位置并且具有不同的扩展名 例如 该列表如下 C Users F
  • CSS边距重叠而不是给出距离[重复]

    这个问题在这里已经有答案了 最近我遇到了边距问题 但我无法解决它 我的 HTML 看起来像这样 div class info box Some text div div class form div CSS info box border
  • 从 Linux 调试 Windows 内核

    我曾经使用调试 Windows 内核虚拟KD WinDBG和一个虚拟机 最近我得到了一台Linux机器 现在我想知道当你的主机无法运行时调试Windows内核的最简单方法是什么虚拟KD WinDBG 我假设该解决方案需要两个虚拟机 但我宁愿