Ptrace

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку

ptrace (англ. process trace) — системний виклик в Unix та деяких Unix-подібних системах. Завдяки ньому певний процес може контролювати інший, надаючи можливості перевірки та управління внутрішнім станом своєї цілі. Зазвичай використовується налагоджувачами або іншими інструментами аналізу програм, та як допоміжний засіб в розробці програмного забезпечення.

Підтримка[ред. | ред. код]

Linux[ред. | ред. код]

Linux надає можливість заборони відстеження через ptrace. Процесу потрібно виконати системний виклик prctl, що очистить прапор PR_SET_DUMPABLE. В пізніх ядрах це запобігає некореневим процесам від використання ptrace. Наприклад, OpenSSH використовує цей механізм щоб запобігти перехопленню сесії ssh через ptrace. Пізні версії Ubuntu постачаються з ядром Linux, налаштованим на запобігання підключенню ptrace до процесів, відмінних від батьківського процесу відстежуваного. Це все ще дозволяє gdb і strace продовжувати працювати, але запобігає їх підключенню до непов'язаного запущеного процесу. Керування цією функцією здійснюється за допомогою параметра /proc/sys/kernel/yama/ptrace_scope. У системах, де ввімкнено цю функцію, такі команди, як «gdb --attach» і «strace -p» не працюватимуть.

Починаючи з Ubuntu 10.10, ptrace можна викликати лише для дочірніх процесів.

Примітки[ред. | ред. код]