概述
理论不说了,以下提供三个demo,几乎逐行注释,看懂了应该就懂了。
一.完成了两件事儿:
1.儿子告诉爸爸,儿子到信息可以被查看/修改 PTRACE_TRACEME
2.爸爸查看儿子的信息 PTRACE_PEEKUSER
#include <stdio.h>
#include <unistd.h>
#include <sys/ptrace.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <sys/reg.h>
/* For constants ORIG_RAX etc */
int main(){
pid_t child;
long orig_rax;
child=fork();
// 这里其实是一个分割点,当fork后,会分为两个进程
// 0是儿子 非0是爸爸(当前进程到id)
// 儿子直接执行,而爸爸会调用wait等待儿子执行完毕
if(child==0){
printf("1.1 child:%dn",child);
//trace me:允许爸爸查看我到信息(告诉内核,我是被夫进程附加的)
ptrace(PTRACE_TRACEME,0,NULL,NULL);
printf("2. /bin/lsn");
//子进程运行到这里暂停,由父进程到PTRACE_CONT恢复,这个时候寄存器已经保存了子进程到信息
execl("/bin/ls","ls",NULL);
}else{
printf("1.0 child:%dn",child
最后
以上就是想人陪鼠标为你收集整理的android inject(一)ptrace基础的全部内容,希望文章能够帮你解决android inject(一)ptrace基础所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复