单步执行系统/ windows DLL

时间:2015-09-04 14:47:23

标签: debugging windbg

我在WinDbg中使用以下命令:

pc;z(eax !=12345543)

这将在任何调用指令处中断,然后自动恢复执行(通过进入被调用的函数)。 问题是,我不想进入windows / system模块,因为我对它们不感兴趣。 因此,无论何时调用windows / system函数,只需要跳过。

有人知道如何在WinDbg中实现它吗?

1 个答案:

答案 0 :(得分:0)

设置.step_filter "filterlist"

这是一个场景,我在第一次调用ntdll时停止!来自系统断点的ZwContinue

0:000> .restart
CommandLine: calc

(6d4.ba4): Break instruction exception - code 80000003 (first chance)

ntdll!DbgBreakPoint:
7c90120e cc              int     3
0:000> .step_filter "ntdll!_*;ntdll!l*"
Filter out code symbols matching:
  ntdll!_*
  ntdll!l*
0:000> pc

ntdll!KiUserApcDispatcher+0xa:
7c90e45a e8ffebffff      call    ntdll!ZwContinue (7c90d05e)

表示你对pc的描述不正确pc不会进入调用它调试调用并在下一次调用时停止如果你需要进入内部使用tc也要注意这两个命令都开始执行目标

pc是p(跳过)然后继续直到下一次调用 tc是t(步入),然后继续直到下一次呼叫

即使作为一个例子,你在z()中的表达也是模糊的 电脑将停止拨打电话10345等电话指令,呼叫ntdll!foo等

你正在寻找一个电话eax指令吗?