用于断点和延迟的无人值守 WinDbg 脚本

Unattended WinDbg script for breakpoints and delays

我想在 Windows 上调试应用程序 运行,方法是在特定地址上设置断点,等待断点命中,让应用程序暂停一段时间,然后继续。所有这些都应该以无人值守的方式完成(例如脚本)。

为此,我选择使用 WinDbg 因为脚本支持看起来很有希望。

启动 WinDbg 并通过进程名称附加到进程可以,例如通过调用以下命令来完成:

"C:\Program Files (x86)\Windows Kits\Debuggers\x64\windbg.exe" -pn my-executable.exe

设置断点是用bu命令完成的:

bu 0x1337

继续使用 g 命令。

可以使用 .sleep 命令进行延迟:

.sleep milliseconds

对于编写 WinDbg 脚本 this PDF 可能会有帮助。

我怎样才能把它们拼凑起来?我不知道如何在遇到断点后进行延迟,也不知道如何在不加载 WinDbg GUI 的情况下仅从命令行执行所有这些操作(包括附加)。

你需要睡什么

您可以嵌入脚本命令并将其传递给 windbg 实例

使用 -c 切换下面的命令列出模块并退出会话

windbg -c "lm;q" calc.exe

你可以把它放在一个 batfile 里面 运行 batfile 喜欢

cdb -c "bu %2 \".sleep 5000;g\";g" %1.exe

一张 gif 显示我如何在 winmain 上休息 5 秒,然后允许 exe 运行 下面