写在前面需要一定的计算机基础

安卓编译运行环境
已root手机
C4droid + SDL + GCC
中文版下载链接 https://www.lanzous.com/b958367
GameGuardian修改器 https://gameguardian.net/download
用于查看内存修改情况

安装完成后请在设置中以root身份运行

知识学习

/proc/${pid}/mem 访问其他进程的内存变量

O_RDONLY 只读打开
O_WRONLY 只写打开
O_RDWR  可读可写打开
以下可选项可以同时指定0个或多个,和必选项按位或起来作为flags 参数。可选项有很多,这里只介绍一部分,其它选项可参考open(2)的Man Page:
O_APPEND   表示追加。如果文件已有内容,这次打开文件所写的数据附加到文件的末尾而不 覆盖原来的内容。
O_CREAT 若此文件不存在则创建它。使用此选项时需要提供第三个参数mode ,表示该文件 的访问权限。
O_EXCL 如果同时指定了O_CREAT,并且文件已存在,则出错返回。
O_TRUNC  如果文件已存在,并且以只写或可读可写方式打开,则将其长度截断(Truncate)为0字节。
O_NONBLOCK 对于设备文件,以O_NONBLOCK 方式打开可以做非阻塞I/O(Nonblock I/O),非阻塞I/O
O_DIRECT: 无缓冲的输入、输出。
O_SYNC:以同步IO方式c打开文件。

BusyBox
killall [-l] [-q] [-SIG] process-name
向给定进程发送一个信号(默认:TERM)
Options:

        -l      列出所有的信号名称和数字-q      如果没有进程被终止,不要抱怨

killall -l

 1) HUP2) INT3) QUIT4) ILL5) TRAP6) ABRT7) BUS8) FPE9) KILL
10) USR1
11) SEGV
12) USR2
13) PIPE
14) ALRM
15) TERM
16) STKFLT
17) CHLD
18) CONT
19) STOP
20) TSTP
21) TTIN
22) TTOU
23) URG
24) XCPU
25) XFSZ
26) VTALRM
27) PROF
28) WINCH
29) POLL
30) PWR
31) SYS

killall -CONT com.tencent.mobileqq 恢复游戏进程
killall -STOP com.tencent.mobileqq 暂停游戏进程

pread64() pread64() 函数原型

#include <unistd.h>
ssize_t pread64(int fildes, void *buf, size_t nbyte, off64_t offset);
ssize_t pwrite64(int fildes, const void *buf, size_t nbyte, off64_t offset);Arguments:
filedes
The file descriptor for the file you want to write in.
buff
A pointer to a buffer that contains the data you want to write.
nbytes
The number of bytes to write.
offset
The desired position inside the file.
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <dirent.h>
#include <string.h>
#include <unistd.h>static int fd=0;
//查找游戏进程pid
int find_proc_pid(const char* pack_name)
{int id=-1,pid=-1;DIR* dir=0;FILE* file=0;char filename[32]={0};char cmdline[256]={0};struct dirent*entry=0;if(pack_name==NULL)return-1;dir=opendir("/proc");if(dir==NULL)return-1;while((entry=readdir(dir))!=NULL){id = atoi(entry->d_name);if(id>0){sprintf(filename,"/proc/%d/cmdline",id);file = fopen(filename,"r");if(file){fgets(cmdline,sizeof(cmdline),file);fclose(file);if(strcmp(pack_name,cmdline)==0){pid = id;break;}}}}closedir(dir);return pid;
}//获取mem文件句柄
int open_proc_mem(int id)
{if(id<=0)return -1;char mempath[30]={0};int hwnd = -1;sprintf(mempath,"/proc/%d/mem",id);//puts(mempath);hwnd=open(mempath,O_RDWR,O_SYNC);return hwnd;
}
//关闭mem句柄
void close_proc_mem(int hwnd)
{if(hwnd-0)close(hwnd);
}//读取文件数据
void pread64_mem(int fd,void* buff,int size,long* addr)
{if(fd<=0 || buff==NULL ||size<=0 || addr==NULL)return;pread64(fd,buff,size,(unsigned long)addr);
}void pwrite64_mem(int fd,const void* buff,int size,long* addr)
{if(fd<=0 || buff==NULL ||size<=0 || addr==NULL)return;pwrite64(fd,buff,size,(unsigned long)addr);
}int main()
{char * game ="com.aide.ndk";long buf[1]={100};//com.tencent.tmgp.pubgmhd”;//com.tencent.ig";//"com.tyhg.kjh";//"coa.tencent.ig";int pid=find_proc_pid(game);printf("pid=%d\n",pid);fd = open_proc_mem(pid);//printf("fd=%d\n",fd);long base=0;long * addr = (long*)0xEDEF8D30;pwrite64_mem(fd,&buf[0],4,addr);pread64_mem(fd,&base,4,addr);printf("value=%d---addr=%x\n",base,addr);//close_proc_mea(fd);return 0;
}

代码需要修改的两处
内存地址 long * addr = (long*)0xEDEF8D30;
包名 char * game =“com.aide.ndk”;
最后编译运行,GameGuardian中查看内存变化

这只是初步积木的第一步读写内存,需要内存地址进行修改,后续笔者如果有功夫会get 模糊搜索 联合搜索 特征码 还有和64位应用的变量类型区别 结合app方框矩阵绘制线条 以及和pc内存绝对地址的区别 。

安卓Android调用C语言实现其他进程应用app的内存变量读取修改与利用BusyBox实现应用暂停和恢复(Native层)相关推荐

  1. 安卓Android和Java语言的异同、关系和区别

    安卓Android和Java语言的异同.关系和区别,安卓Android是一种以Linux为基础的开放源码操作系统,主要使用于便携设备.2011年第一季度,安卓在全球的市场份额首次超过塞班系统,跃居全球 ...

  2. java计算机毕业设计基于安卓Android/微信小程序的大学生签到管理系统APP

    项目介绍 随着Internet的发展,人们的日常生活已经离不开网络.未来人们的生活与工作将变得越来越数字化,网络化和电子化.网上管理,它将是直接管理签到系统app的最新形式.本论文是以构建签到系统ap ...

  3. 基于安卓/android/微信小程序的流动人口管理移动APP#计算机毕业设计

    项目介绍 通过利用信息化管理技术对社区流动人口状况进行汇总分析,对流动人口数量.年龄结构.流动方向.经营情况.计划生育情况以及在本区分布情况.投资情况等数据进行系统分析,开发一套符合当地社区的流动人口 ...

  4. java计算机毕业设计基于安卓Android/微信小程序的智能停车场管理系统APP

    项目介绍 随着计算机的普及,国际上智能停车场管理系统前景良好,网上用户停车的出现,证明了智能停车场管理系统具有良好的前景.在当今世界之中,随着科学技术的不断发展和计算机越来越普及,运用计算机对系统进行 ...

  5. c++封装so库,供安卓android调用

    文章目录 一.概述 二.用C/C++开发出Linux的so库 1.开发分析: 2.开发准备: 三.在C/C++代码里加入JNI,支持java通过JNI调用so库 1.JNI 是Java Native ...

  6. 安卓Android下如何开发USB NFC读写器APP

    荣士第二代USB免驱动IC读写器IC-02支持Windows.安卓(Android).Linux系统,为方便IC-02读写器能快速的接入安卓(Android)系统,我们提供了各种安卓版本的So库及示例 ...

  7. java计算机毕业设计基于安卓Android的校园快药APP-药店管理app(源码+系统+mysql数据库+Lw文档)

    项目介绍 本文介绍了校园快药APP软件开发建设的意义和国内外发展现状,然后详细描述了所开发手机APP的可行性分析,并分析了手机APP所要实现的功能.因为校园快药设施较多,而且人口密集,不能更好的管理校 ...

  8. java计算机毕业设计基于安卓Android的校园快药APP-药店管理app

    项目介绍  本文介绍了校园快药APP软件开发建设的意义和国内外发展现状,然后详细描述了所开发手机APP的可行性分析,并分析了手机APP所要实现的功能.因为校园快药设施较多,而且人口密集,不能更好的管理 ...

  9. java计算机毕业设计基于安卓Android的跨校区班车乘车预约系统APP

    项目介绍 网络的广泛应用给生活带来了十分的便利.所以把班车乘车预约与现在网络相结合,利用java技术建设班车乘车预约APP,实现谷惠农产品线上销售的信息化.则对于进一步提高乘车发展,班车乘车预约经验能 ...

最新文章

  1. 贪心算法-跳跃游戏——b
  2. mysql导入报编码错误问题解决
  3. 山大计算机学院副院长屠长河,留学交流系列——山东大学计算机学院访问澳门大学...
  4. 虚拟Linux系统使用Windows系统oracle数据库
  5. 数据分析中会常犯哪些错误,如何解决? 三
  6. 嵌入式linux离线地图,基于gmap.net制作离线地图下载器
  7. 小米手机如何升级Android版本,小米手机如何从稳定版升级到开发版
  8. linux查看wifi信号命令_详细解析:Linux系统的无线网络命令
  9. 背单词App开发日记3
  10. bochs在安卓上模拟kali linux系统
  11. NFT新玩法丨一文了解将NFT所有权分割成ERC20代币的Fractional协议
  12. ajax 传递对象 返回状态500
  13. 2019-2-16-WPF-封装-dotnet-remoting-调用其他进程
  14. 呐,c语言学习你想要的都在这里
  15. python3.6手机版_QPy3.6 - Python3.6 for QPython
  16. Active Directory渗透
  17. 无人机生态环境监测、图像处理与GIS数据分析综合应用
  18. CAD画图软件测试自学,小白自学CAD教程:706集全网最新CAD学习教程,一学就会
  19. 实现android自动接听来电功能
  20. 两百行C++代码实现yolov5车辆计数部署(通俗易懂版)

热门文章

  1. long数据类型java_[二]基础数据类型之Long详解
  2. 六时出行 App iOS隐私政策
  3. Java 全角半角转换工具类
  4. 健身管理系统 健身房管理系统集成方案
  5. 计算机无法开机 警报器在响,按下开机键以后报警器一直滴滴滴的响,而且电脑开启不了,响了一段时...
  6. D3D基本矩阵函数和显卡硬件术语
  7. 3an推客教程:CPS按成交设置流程
  8. 从源码的角度理解Glide的执行流程
  9. 蓝桥杯 高精度加法 C++基础练习 HERODING的蓝桥杯之路
  10. Linux之gstreamer视频编解码测试指令