Когда я хочу проверить системный вызов tracee, я использую PTRACE_ATTACH
, затем PTRACE_SYSCALL
в цикле и, наконец, PTRACE_DETACH
.
Проблема в том, что если трассируемый зарегистрирован в SIGTRAP или SIGCONT, он может изменить свое поведение, пока я использую PTRACE_SYSCALL или PTRACE_DETACH, а я не хочу этого делать.
Когда я присоединяюсь к tracee с PTRACE_ATTACH
, tracee получает SIGSTOP
, но не может зарегистрироваться/отреагировать на этот сигнал, так что все в порядке.
Каково решение, что трассировщик не мог поймать SIGTRAP, когда я использую PTRACE_SYSCALL
или SIGCONT, когда я использовал PTRACE_CONT
ptrace
для анализа своего вредоносного ПО. В этом вопросе спрашивающий играет роль исследователя безопасности и хочет знать, как использоватьptrace
для анализа (предположительно с точками останова) вредоносных программ. - person Joseph Sible-Reinstate Monica   schedule 10.05.2020PTRACE_TRACEME
, tracer может изменить/подавить любой системный вызов tracee, который он хочет, прежде чем это произойдет. Если изPTRACE_ATTACH
, трассировщику может потребоваться ввести код для отмены того, что трассировщик уже сделал (например,signal(SIGTRAP,SIG_IGN)
). - person Craig Estey   schedule 10.05.2020undo
signal(SIGTRAP,...)
, например, если трассировщик зарегистрировался на этот сигнал до того, как трассировщик подключится к трассировщику? - person Keystone   schedule 10.05.2020