Android在内部机制上并不提供进程间的越界数据访问,所以通过Java完全无法实现越界数据的访问和修改,我们只能使用Linux上提供的ptrace()函数实现越界访问,其中还要用到waitpid()函数等待进程连接。
具体使用方式如下:
#include //For ptrace()
#include //For waitpid()
int main () {
int pid = 1337; //The process id you wish to attach to
int address = 0x13371337; //The address you wish to read in the process
//First, attach to the process
//All ptrace() operations that fail return -1, the exceptions are
//PTRACE_PEEK* operations
if (ptrace(PTRACE_ATTACH, pid, NULL, NULL) == -1) {
//Read the value of errno for details.
//To get a human readable, call strerror()
//strerror(errno)
//error that occurred
return 0;
}
//Now, attaching doesn't mean we can read the value straight away
//We have to wait for the process to stop