【发布时间】:2020-05-09 21:59:50
【问题描述】:
当我想检查 tracee 系统调用时,我使用 PTRACE_ATTACH ,然后在循环中使用 PTRACE_SYSCALL ,最后使用 PTRACE_DETACH 。
问题是,如果被跟踪者注册到 SIGTRAP 或 SIGCONT,它可以在我使用 PTRACE_SYSCALL 或 PTRACE_DETACH 而我不想这样做时改变他的行为。
当我使用PTRACE_ATTACH 附加到tracee 时,tracee 得到了SIGSTOP,但它无法注册/对此信号作出反应,所以没问题。
我使用PTRACE_SYSCALL时tracee无法捕获SIGTRAP或使用PTRACE_CONT时SIGCONT的解决方案是什么
【问题讨论】:
-
查看我最近的 cmets:stackoverflow.com/questions/61667231/…
-
@CraigEstey 这实际上听起来与此完全相反。在那个问题中,提问者扮演恶意软件作者的角色,并想知道如何阻止安全研究人员使用
ptrace分析他们的恶意软件。在这个问题中,提问者扮演着安全研究员的角色,想知道如何使用ptrace来分析(可能是断点)恶意软件。 -
@JosephSible-ReinstateMonica 防止被追踪者做任何追踪者不想要的事情的技术是相同的。如果您从
PTRACE_TRACEME开始,跟踪器可以修改/抑制它想要的任何跟踪系统调用在发生之前。如果来自PTRACE_ATTACH,则跟踪器可能必须注入代码以撤消被跟踪者已经完成的事情(例如signal(SIGTRAP,SIG_IGN))。 -
@Catig ,跟踪器如何
undosignal(SIGTRAP,...)例如,如果跟踪器在跟踪器附加到跟踪器之前注册到此信号? -
@Keystone 抑制信号的要点是,您可以在不必取消设置的情况下阻止其信号处理程序运行。