ptrace є системний виклик, який зустрічається в Unix і кількох Unix-подібних операційних системах. Використовуючи ptrace (абревіатура від «process trace»), один процес може контролювати інший, дозволяючи контролеру перевіряти та маніпулювати внутрішнім станом своєї цілі.
Виявлення впровадження коду Ptrace Сигнатура спеціально шукає запити PTRACE_POKETEXT і PTRACE_POKEDATA, які зазвичай використовуються для зміни пам’яті цільового процесу. Впровадження коду — це складний вектор атаки, що дозволяє зловмисникам запускати довільний код у контексті іншого процесу.
Якщо вам потрібно зупинити його після приєднання (або в будь-який інший час), не надсилаючи йому жодних сигналів, використовуйте команду PTRACE_INTERRUPT. Операція ptrace(PTRACE_TRACEME, 0, 0, 0); перетворює викликаючий потік на tracee.
Системний виклик ptrace() повинен дозволяють процесу спостерігати та контролювати виконання іншого процесу, а також перевіряти та змінювати певні атрибути цього процесу. Ця функція працює через запити, які впливають на відстежуваний процес, використовуючи інші параметри способами, унікальними для кожного типу запиту.
PTRACE_DETACH використовується для від’єднання від цільового процесу, дозволяючи йому продовжити виконання. PTRACE_CONT використовується для продовження виконання зупиненого процесу. PTRACE_PEEKDATA і PTRACE_POKEDATA дозволяють читати і записувати пам'ять в адресному просторі цільового процесу.
Впровадження коду — це термін, який використовується для опису атак, які вводять код у програму. Цей введений код потім інтерпретується програмою, змінюючи спосіб виконання програми. Атаки з впровадженням коду зазвичай використовують вразливість додатка, що дозволяє обробляти недійсні дані.