android无后缀二进制执行文件替代apk实现程序功能
韩梦飞沙 韩亚飞 313134555@qq.com 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下的一个可执行的二进制文件
什么是交叉编译,交叉编译有什么用。