如何调试在启动时启动的进程?

2023-12-24

我正在尝试在启动时启动的 Windows 服务中设置断点。由于我犯了一个不幸的错误,该服务迫使机器进入重新启动循环:这意味着我无法达到可以部署修复程序的稳定状态,而且显然我无法尝试调试该服务在更方便的时间。

我可以在内核模式下使用windbg。我非常想在服务达到预期时中断wmain功能,但我对此有疑问。

到目前为止,我发现使用以下命令可以在加载图像时停止:

!gflag +ksl
sxe ld MyServiceExecutable.exe

问题是,一旦它中断,我发现自己处于一个空的过程中,显然无法设置断点。bm MyServiceExecutable!wmain说它找不到符号并且断点将被“推迟”,但实际上从未设置或到达。设置断点KERNEL32!BaseThreadInitThunk似乎在所有正在运行的进程中或多或少地随机工作,到目前为止我没有太多运气让它停止我的服务。


好吧,这可能不是最好的方法,但它确实有效。 MSFT,如果我做了一些愚蠢的事情,请纠正我!

第一部分很好:

kd> !gflag +ksl
    New NtGlobalFlag contents: 0x00440000
        ksl - Enable loading of kernel debugger symbols
        ece - Enable close exception
kd> sxe ld MyServiceExecutable.exe
kd> g

在内核模式下,sxe ld将停止第一次仅加载可执行文件。

当调试器再次停止时,我们就进入了新创建的进程。我们不再需要 gflag:

kd> !gflag -ksl
    New NtGlobalFlag contents: 0x00400000
        ece - Enable close exception

虽然我们需要EPROCESS指针。我们可以得到它.process or !process -1 0,但它已经在$proc伪寄存器:

kd> r $proc
    $proc=0011223344556677
kd> .process
    Implicit process is now 00112233`44556677

从这一点开始,可以设置断点nt符号,所以让我们使用NtMapViewOfSection因为每个加载的 dll 都会调用它。

kd> bp /p @$proc nt!NtMapViewOfSection
kd> g

在下一站应该加载 ntdll(检查kn如果它在堆栈上,.reload /user如果需要的话),这样你就可以设置断点RtlUserThreadStart。另外,我们将覆盖断点 0,因为我们不需要继续中断NtMapViewOfSection不再(这只是一个麻烦)。

kd> bp0 /p @$proc ntdll!RtlUserThreadStart
kd> g

所有符号都应该在第一个用户线程启动时加载,因此您可以随意在任意位置设置断点。

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

如何调试在启动时启动的进程? 的相关文章

随机推荐

  • Zend 中的 addmultioption 数组问题

    我正在尝试在我的 Zend Form Element Select 元素中添加选项 monthvalues new Zend Form Element Select month values table new Model DbTable
  • 一开始如何在客户端和服务器端使用环境变量

    当我像这样启动流星项目时 我正在使用环境变量 MYVAR1 foo bar sdf MYVAR2 0 meteor 然后在文件 root lib constants js 中我有 ENV sjobs unisight dfgdfsgf AU
  • Postgres 9.6 - 为 json 数组创建唯一索引

    Sup 我们有一个 Postgres 9 6 表myTable有一排data jsonb NOT NULL DROP TABLE myTable CREATE TABLE myTable data jsonb NOT NULL 我们想要存储
  • 如何手动将库添加到 Visual Studio 2017 项目中?

    我对这个非常基本的问题表示歉意 这个问题肯定已经被问过并回答过 也对我非常过时的术语表示歉意 我寻找答案 但没有找到任何有用的东西 我正在使用 VS 2017 Community 的最新更新 并且我正在尝试手动将我以前称为 函数库 的内容添
  • TypeScript 经常出现问题,并且更喜欢 import 而不是 require

    只要有可能 我都会尝试使用import over require但在某些情况下这会破坏类型检查 处理这个问题的正确方法是什么 是否可以导入 不是全部require可以替换为import s Left Property get does no
  • iPad:分割视图不旋转

    我有以下设置 的一个子类UISplitViewController在构造函数中创建主视图控制器和详细视图控制器 均覆盖的主视图控制器和详细视图控制器shouldAutorotateToInterfaceOrientation回来YES 详细
  • 连接到外部 MYSQL docker 容器

    我有两个正在运行的虚拟机 其中一个 A 在 docker 网络内有 MYSQL 数据库 另一个 B VM 具有我的前端应用程序 docker 容器 我运行我的 MYSQL docker 容器 A 如下所示 docker run name d
  • 当我编辑文件时,Visual Studio 不会跟踪更改或从源代码管理中检出文件

    我是 TFS 的新手 在我的工作中 我将 TFS 项目映射到本地目录 执行获取 一切都按我的预期进行 当我在本地副本上编辑文件时 源代码管理会自动将它们签出以进行编辑 并通过挂起的更改窗口跟踪带有挂起的更改的文件 然后我就用那个窗口全天检查
  • C# 中的模拟文件 IO 静态类

    我是单元测试的新手 我需要模拟 System IO 命名空间中的 File 静态类 我正在使用 Rhinomock 实现此目的的最佳方法是什么 可以说我需要模拟 File Exists File Delete 您无法使用 Rhino 模拟来
  • Hibernate 验证@ManyToOne 至少有一个

    我将 Spring 4 1 与 Hibernate 一起使用 并使用 OneToMany ManyToOne 等注释实体 对于某种情况 A 类 有很多 B 类 如果 A 类没有至少一个与之关联的 B 类 则 A 类无效 有没有一种简单的方法
  • 使用 pyparsing 解析数学表达式

    我正在尝试使用 pyparsing 来解析数学表达式 我知道我可以从 pyparsing 网站复制示例计算器 但我想理解它 以便稍后添加 我来这里是因为我试图理解这个例子 但我做不到 所以我尽力了 我得到了这个 symbol pp Lite
  • 如何找到域名的权威名称服务器?

    如何找到冲突的 DNS 记录的来源 您需要给定域名的 SOA 授权起始 记录 这就是您使用通用可用的nslookup命令行工具 command line gt nslookup gt set querytype soa gt stackov
  • 扩展店件模型

    我需要扩展 Shopware 变体模型 以便添加一些自定义属性 例如金属类型 石头宝石类型 这是基础文章 这些属性将在后端和前端使用 我怎样才能做到这一点 谢谢 扩展 Shopware 核心模型本身根本不可能 根据您尝试扩展的具体模型 有两
  • Maven Surefire 默认情况下顺序执行测试用例吗?

    这是此内容的后续内容question https stackoverflow com questions 7267790 does junit execute test cases sequentially当我深入研究我的研究时我意识到 假
  • iPhone / iPad / iPod 滑动事件 javascript

    我正在寻找 如果可能的话 JavaScript 库 插件来提供滑动事件 然而 我并不追求简单的滑动检测 例如 jqTouch 提供的 我希望创建类似于 iPod 设备上的图像查看器的行为 例如 您向左或向右拖动即可转到下一张图像 您必须将图
  • 在带有边框的画布中的当前剪辑上绘制位图(绘画)

    我正在通过编写游戏来学习 Android 并且在图形 API 方面遇到问题 我想将图像绘制成路径的形状 然后在路径上添加边框 我能够使用路径剪辑图像 但找不到在其上添加边框的方法 我认为这很简单 因为 API 支持 Canvas draw
  • MOV x86 指令是否实现 C++11 memory_order_release 原子存储?

    根据这个https www cl cam ac uk pes20 cpp cpp0xmappings html https www cl cam ac uk pes20 cpp cpp0xmappings html 已发布的商店实现为MOV
  • 如何将多级对象映射到indexedDB以获得最佳效率

    我的问题涉及在indexedDB 中布置数据结构 我开始构建一个小型网页功能 该功能逐渐发展成为一种网络学习工具 现在更接近于独立的渐进式网络应用程序 使用 localStorage 效果很好 但随着该工具的发展 5MB 限制可能会成为某些
  • AdMob 同意书未显示?

    我不明白为什么 Google 提供的同意书没有显示 说加载成功 但是却没有显示 我在欧洲 所以我的位置不是问题 我在模拟器和真实设备上都尝试过 我只手动选择了 12 个广告提供商 这是有问题的代码 PACConsentInformation
  • 如何调试在启动时启动的进程?

    我正在尝试在启动时启动的 Windows 服务中设置断点 由于我犯了一个不幸的错误 该服务迫使机器进入重新启动循环 这意味着我无法达到可以部署修复程序的稳定状态 而且显然我无法尝试调试该服务在更方便的时间 我可以在内核模式下使用windbg