ptrace 系统调用
ptrace 是 Linux 环境下,许许多多分析调试工具,如 strace,ltrace 等,所使用的最核心的系统调用。ptrace,即 process trace,指进程追踪。它能让一个进程控制及影响另一个进程的行为,比如让另外一个进程停止运行,获取另外一个进程内存地址空间中的值,设置另外一个进程内存中的值,获取另外一个进程的寄存器的值,设置另外一个进程的寄存器的值,等等等等。
ptrace 系统调用的 C 库接口原型如下:
#include long ptrace(enum __ptrace_request request, pid_t pid,void *addr, void *data);
后面更详细地描述 ptrace 系统调用。
描述
ptrace() 提供了一种方法,让一个进程(称为 “tracer”)可以观测及控制另外一个进程(称为 “tracee”)的执行,让 tracer 检测和修改 tracee 的内存和寄存器。它主要用于实现断点调试和系统调用追踪,前者即 GDB 这种调试器,后者即 strace 等系统调用追踪工具。
Tracee 首先需要被 attached 到 tracer 上。Attachment 和后续的命令是针对特定线程的:在一个多线程进程中,每个线程可以被单独 attached 到一个(有可能不同的) tracer,或者不被 attached,即不被调试。因此
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
