首页
社区
课程
招聘
[求助]ptrace 修改内存失败 PTRACE_PEEKDATA
发表于: 2019-11-15 16:17 5514

[求助]ptrace 修改内存失败 PTRACE_PEEKDATA

2019-11-15 16:17
5514
目前尝试制作自己的调试器,在尝试修改内存的时候:
ptrace(PTRACE_POKEDATA, pid, address, &long_tmp);
第四个参数无效 无论第四个参数是什么 对应的内存地址都会被置为 00 00 00 00

有遇到过这个问题的吗?求交流
有研究Android调试器的吗?求交流

Q:1990343340

运行环境:AndroidX86模拟器
编译环境:window+ndk

下边是关键代码以及运行日志

//关键代码
void addBreakPoints(long long address){
	long result;
	cout<<"address = "<<address<<endl;
	//long ins = ptrace(PTRACE_PEEKDATA, pid, address, nullptr);
	long long_tmp = 0x1fff;
	cout<<"PTRACE_POKEDATA之前展示内存"<<endl;
	showMemoryabc(address,0x20);
	result = ptrace(PTRACE_POKEDATA, pid, address, &long_tmp);
	cout<<"返回值: "<<result<<endl;
	cout<<"PTRACE_POKEDATA之后展示内存"<<endl;
	showMemoryabc(address,0x20);
}
//运行日志
address = 2315314352
PTRACE_POKEDATA之前展示内存
55 89 E5 56 83 E4
FC 83 EC 14 8B 45
10 8B 4D 0C 8B 55
08 8B 75 10 83 C6
01 89 44 24 10 89
F0 89
返回值: 0
PTRACE_POKEDATA之后展示内存
00 00 00 00 83 E4
FC 83 EC 14 8B 45
10 8B 4D 0C 8B 55
08 8B 75 10 83 C6
01 89 44 24 10 89
F0 89

由运行日志可以看出,address没问题,不然的话对应的内存地址的值不会被改变
可是我传的值是 0x1fff(ff 1f 00 00)  为什么对应位置的内存变成了 00 00 00 00 

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

最后于 2019-11-15 16:23 被AAAyangcheng编辑 ,原因: 代码逻辑以及日志描述不是太清晰
收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 2331
活跃值: (1219)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
2
ptrace_writedata https://bbs.pediy.com/thread-141355.htm
2019-11-15 16:33
0
雪    币: 582
活跃值: (317)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
已经解决 谢谢大家的关注
2019-11-24 11:45
0
游客
登录 | 注册 方可回帖
返回
//