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. ");  //源文件不存在的时候提示错误
        return ;
    }
    fpDest = fopen(argv[1], "wb");  // //以写入二进制的方式打开目标文件
    if(fpDest==NULL){
        printf("Destination file open failure. ");
        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 ");
    copyFile(argv);
    }else{
    printf("exist ");
    }
    printf("main exec end ");
}

====== 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. ");  //源文件不存在的时候提示错误
        return ;
    }
    fpDest = fopen(argv[1], "wb");  // //以写入二进制的方式打开目标文件
    if(fpDest==NULL){
        printf("Destination file open failure. ");
        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 ");
    copyFile(argv);
    }else{
    printf("exist ");
    }


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

==========

然后 交叉编译 后, 生成Android下的一个可执行的二进制文件

什么是交叉编译,交叉编译有什么用。

原文地址:https://www.cnblogs.com/yue31313/p/7405797.html