【问题标题】:How to debug a child process which is already under debug如何调试已经在调试的子进程
【发布时间】:2020-03-04 08:41:40
【问题描述】:

我有两个进程(Linux ELF):进程 A 是主进程,B 是子进程(A 使用 fork() 创建 B)。 A 还使用 ptrace 来跟踪 B(就像某种沙箱)捕获 B 的 int 3 指令。

我想使用 GDB 调试进程 B。当我尝试 GDB 附加子进程 B 时,它显示 B 已经在调试中的错误。那么我有办法调试已经在另一个“调试器”下的子进程吗?

在我的情况下,A和B有交互,我不能直接修补或重写A中的代码来禁用ptrace功能。

【问题讨论】:

    标签: linux debugging gdb sandbox


    【解决方案1】:

    那么我有办法调试已经在另一个“调试器”下的子进程吗?

    没有。

    拥有一个由其父级ptrace'd 的子级,并且两者之间有非平凡的交​​互,是少数有效的反调试技术之一。

    要调试B,您必须在没有A 沙箱的情况下运行它,并且必须通过“模拟”A 通常处理的进程来复制AB 之间的交互B 通过 GDB。

    【讨论】:

      猜你喜欢
      • 2014-11-28
      • 1970-01-01
      • 2012-11-21
      • 2013-05-26
      • 1970-01-01
      • 2018-08-15
      • 2011-05-12
      • 2012-10-04
      • 1970-01-01
      相关资源
      最近更新 更多