【问题标题】:pwntools: Use gdb api to interrupt a processpwntools:使用 gdb api 中断进程
【发布时间】:2022-01-01 11:41:24
【问题描述】:

运行gdb cmd 时,我可以通过Ctrl-C 手动停止cmd。这会调用调试器并让我检查内存。

在 pwntools 中,我可以附加 gdb,并且可以通过在 gdb 窗口中按 Ctrl-C 来手动停止该进程。我希望能够通过 pwntools 脚本以编程方式执行此操作:类似于:

if output != expected:
    io.gdb.ctrlc() # break, let me use gdb

这不一定需要 pwntools 答案。 GDB 有一个强大的 Python API,但我在其中找不到相当于“中断进程,好像有人按了 Ctrl-C”。有没有办法通过 GDB Python API 或 pwntools 方法做到这一点?

【问题讨论】:

    标签: python gdb pwntools


    【解决方案1】:

    有没有办法做到这一点,通过 GDB Python API 或通过 pwntools 方法?

    我不知道pwntools,但是在 all-stop 模式下使用 GDB Python API 这是不可能的:当下级运行时,GDB 阻塞(用waitpid 等待下级发生什么事)。

    可能non-stop mode 中工作。

    【讨论】:

    • 在 gdb 窗口中按 Ctrl-C 是有效的,因此必须有某种方式以编程方式执行相同的操作。
    • @SRobertJames "击中 Crtl-C ... 必须有 ..." -- 你的结论根本不成立。在 Ctrl-C 中发生的事情相当复杂,但最终会解除 GDB waitpid 的阻塞,这与获得 SIGSEGV 或遇到断点的劣等方式完全相同。
    • 那我能把信号发给下级吗?
    • @SRobertJames 当然。只是不是来自 GDB 本身(因为 GDB 被阻止了)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-06-20
    • 1970-01-01
    • 2020-06-30
    • 1970-01-01
    • 2015-10-05
    • 2021-09-12
    • 1970-01-01
    相关资源
    最近更新 更多