目前尝试制作自己的调试器,在尝试修改内存的时候: 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直播授课