【问题标题】:How do you isolate a kernel call for a program using WinDbg?如何使用 WinDbg 隔离程序的内核调用?
【发布时间】:2017-12-20 02:55:20
【问题描述】:

我正在尝试使用 WinDbg 来调试在加载特定程序时发生的内核调用。内核模式代码内部发生错误。内核函数是机器上运行的许多进程每秒发生多次的极其常见的调用。因此,如何隔离内核调用来调试它?例如,如果我在 nt!NtCreateSection 或 ntdll!RtlEnterCriticalSection 上设置断点,WinDbg 会中断很多次,以至于我什至无法进入操作系统并启动有问题的程序,因为它会中断对这些函数是内存中所有其他程序都在使用的,而不是用于我要调试的目标程序。请指定解决此问题的方法,并针对内核调用的特定实例或针对此问题的其他解决方案。

【问题讨论】:

    标签: windows kernel windbg


    【解决方案1】:

    sxe ld 你的模块。
    一旦你打破你的模块
    使用 !process 0 0 您的模块找到 eprocess。
    设置进程特定断点
    像 bp /p eprocess 符号。

    或者用 0xcc 硬补丁你的模块的入口点,然后从那里开始

    你也可以使用 ntsd -d your module 进行重定向调试

    如果需要,您还可以使用 !gflags + ksl 强制加载符号

    【讨论】:

      猜你喜欢
      • 2011-01-06
      • 2011-12-19
      • 2015-09-26
      • 2012-01-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-17
      • 2017-08-22
      相关资源
      最近更新 更多