2019-08-23

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;

}

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內容