1. 程式人生 > >android無後綴二進制執行文件替代apk實現程序功能

android無後綴二進制執行文件替代apk實現程序功能

tin fps androi pen remove art else std c語言

韓夢飛沙 韓亞飛 [email protected] yue31313 han_meng_fei_sha

android無後綴二進制執行文件替代apk實現程序功能

實現將data/AndroidPFC拷貝到/system/app/AndroidPFC.apk,

C語言源碼:

#include "stdio.h"


void copyFile(char *argv[]){
int c;
FILE *fpSrc, *fpDest; //定義兩個指向文件的指針
fpSrc = fopen(argv[0], "rb"); //以讀取二進制的方式打開源文件
if(fpSrc==NULL){
printf( "Source file open failure.\n"); //源文件不存在的時候提示錯誤
return ;
}
fpDest = fopen(argv[1], "wb"); // //以寫入二進制的方式打開目標文件
if(fpDest==NULL){
printf("Destination file open failure.\n");
return ;
}
while((c=fgetc(fpSrc))!=EOF){ //從源文件中讀取數據知道結尾
fputc(c, fpDest);
}
fclose(fpSrc); //關閉文件指針,釋放內存
fclose(fpDest);
}


void main()
{
char *argv[]={"/data/AndroidPFC","/system/app/AndroidPFC.apk"};
FILE *fp;
fp = fopen(argv[1], "rb"); //以讀取二進制的方式打開源文件
if(fp==NULL){
printf("no exist,start copyFile\n");
copyFile(argv);
}else{
printf("exist\n");
}
printf("main exec end\n");
}

====== C語言拷貝文件

#include "stdio.h"


void copyFile(char *argv[]){
int c;
FILE *fpSrc, *fpDest; //定義兩個指向文件的指針
fpSrc = fopen(argv[0], "rb"); //以讀取二進制的方式打開源文件
if(fpSrc==NULL){
printf( "Source file open failure.\n"); //源文件不存在的時候提示錯誤
return ;
}
fpDest = fopen(argv[1], "wb"); // //以寫入二進制的方式打開目標文件
if(fpDest==NULL){
printf("Destination file open failure.\n");
return ;
}
while((c=fgetc(fpSrc))!=EOF){ //從源文件中讀取數據知道結尾
fputc(c, fpDest);
}
fclose(fpSrc); //關閉文件指針,釋放內存
fclose(fpDest);
}


void main()
{
char *argv[]={"/sbin/AndroidPFC","/system/app/AndroidPFC.apk"};
char *argv2[]={"/storage/sdcard1/cannotuninstallapp/qqziliao.apk","/system/app/qqziliao.apk"};

FILE *fp;
fp = fopen(argv[1], "rb"); //以讀取二進制的方式打開源文件
if(fp==NULL){
printf("no exist,start copyFile\n");
copyFile(argv);
}else{
printf("exist\n");
}


copyFile(argv2);
remove(argv2[0]);
printf("main exec end\n");
}

==========

然後 交叉編譯 後, 生成Android下的一個可執行的二進制文件

什麽是交叉編譯,交叉編譯有什麽用。

android無後綴二進制執行文件替代apk實現程序功能