zoukankan      html  css  js  c++  java
  • 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下的一个可执行的二进制文件

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

  • 相关阅读:
    任务Task系列之Parallel的静态For,ForEach,Invoke方法
    任务Task系列之使用CancellationToken取消Task
    泛型基础
    串的两种模式匹配算法
    数据结构之串类型
    c#基础知识之设计类型
    挣脱
    数据结构之栈和队列
    数据结构之线性表
    NGUI背包系统
  • 原文地址:https://www.cnblogs.com/yue31313/p/7405797.html
Copyright © 2011-2022 走看看