Ada panggilan sistem bernama ptrace. Dibutuhkan 4 parameter:operasi, PID dari proses target, alamat di memori proses target, dan penunjuk data. Cara 2 parameter terakhir digunakan bergantung pada operasi.
Misalnya Anda dapat melampirkan/melepaskan debugger Anda ke suatu proses:
ptrace(PTRACE_ATTACH, pid, 0, 0);
...
ptrace(PTRACE_DETACH, pid, 0, 0);
Eksekusi satu langkah:
ptrace(PTRACE_ATTACH, pid, 0, 0);
int status;
waitpid(pid, &status, WSTOPPED);
while (...) {
ptrace(PTRACE_SINGLESTEP, pid, 0, 0);
// give the user a chance to do something
}
ptrace(PTRACE_DETACH, pid, 0, 0);
Anda juga dapat membaca/menulis memori proses target dengan PTRACE_PEEKDATA dan PTRACE_POKEDATA. Jika Anda ingin melihat contoh nyata, periksa gdb.
Informasi file renggang terperinci di Linux
Apakah SELinux memberikan keamanan ekstra yang cukup sehingga layak untuk dipelajari/diatur?