如何调试已在调试中的子进程



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

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

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

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

否。

拥有一个由其父级ptrace'd的子级,以及两者之间的非平凡交互,是为数不多的有效反调试技术之一。

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

最新更新