android無後綴二進制執行文件替代apk實現程序功能
韓夢飛沙 韓亞飛 [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實現程序功能