標籤:開源 fclose ati exec argv putc oid int fopen
韓夢飛沙 韓亞飛 [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 openfailure.\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 openfailure.\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實現程式功能