android 取地址
int read_maps(){
LOGE("开始遍历进程pid");
char filename[] ="/proc/self/maps"; //文件名
FILE *fp;
char p[7] ={""};
int i;
char StrLine[1024]; //每行最大读取的字符数
char name[]="/system/lib/libc.so";
if((fp = fopen(filename,"r")) ==NULL)//判断文件是否存在及可读
{
LOGE("error!");
return -1 ;
}
while (!feof(fp))//feof 文件结束返回非0值
{
fgets(StrLine,1024,fp); //每次读取一行
if(NULL!=strstr(StrLine,name)){
strncpy(p,StrLine,8);
p[8]='\0';
LOGE("基地址 %s\n",p);
sscanf(p,"%x",&i); // 将char数组的赋值给int
i = i +0x0002FB93; // 0002FB92 基地址加上偏移
LOGE("函数 addr %x",i);
return i;
}
}
fclose(fp); //关闭文件
return 0;
}
网友评论