1.linux下有个开源的内存修改项目scanmem。
项目地址:
2.Android下要针对其他进程进行内存修改是基于ptrace系统调用,因此要想学会android下的进程注入,首先需要了解ptrace的用法。
-
备注:在ubuntu下输入man ptrace命令,查看具体描述。
3.Android系统是基于Linux系统,在linux系统中可以通过ptrace系统调用实现对进程的内存修改。过程大致过程如下:
-
[1]通过远程进程pid,ATTACH到远程进程
-
[2]获取远程进程寄存器值,并保存,以便注入完成后恢复进程原有状态
-
[3]获取远程进程系统调用mmap、dlopen、dlsym调用地址
-
[4]与前端交互根据值搜索根据proc/<pid>/maps中的地址和偏移量
-
[5]根据值得变化,来确定内存地址(一般没办法精确到一个)
-
[6]根据内存地址修改成前端需要的值
-
[7]恢复远程进程寄存器
-
[8]DETACH远程进程。
备注:其中4-5两步可以有多种方式来搜索定位
参考:
http://www.sanwho.com/133.html
http://blog.csdn.net/mldxs/article/details/14486827
http://zhangwenxin82.blog.163.com/blog/static/114595956201171510512459/