ptrace 背景
ptrace 是linux 中跟踪进程使用的一种方式手段,主要方法是使用stop 信号将目的进程stop掉, 然后使用gup.c中的get_user_page对目的进程的地址空间进行访问
从代码角度讲,ptrace 是linux 的一个系统调用, 详细描述可以man ptrace查看
代码流程
ptrace 系统调用
代码文件 kernel/ptrace.c
主要代码流程:
ptrace_attach: 1) ptrace_link将自己链接到parent 2) 将对方任务stop掉,
2) arch_ptrace:
man 里面看到的各使用ptrace的命令字都是在这个函数中实现的, 如PTRACE_PEEKDATA 等, 对应文件,arch/arm/kernel/ptrace.c
ptrace 如何读取tracee的进程地址空间
我们来研究 PTRACE_PEEKDATA 命令字是如何实现的?
ptrace syscall -> arch_ptrace ->ptrace_access_vm -> __access_remote_vm -&g