美文网首页
APK渠道打包与APK加密加固

APK渠道打包与APK加密加固

作者: 背影杀手不太冷 | 来源:发表于2016-08-22 19:50 被阅读634次

    标签(空格分隔): Android

    APK渠道打包##

    • 通过友盟

    参考StormZhang文章
    比较常见的友盟移动统计sdk中使用的方案,UMeng要根据各应用市场渠道号来进行一些统计和分析,比如各渠道的下载数、活跃度、自动更新等等。这种方案是 通过build.gradle脚本中的productFlavor 来实现的。首先在AndroidManifest.xml文件的 application 标签里指定一个 meta-data ,然后Umeng SDK会读取这个标签中value传到Umeng的后台,这样就可以让开发者监测到自己的应用程序渠道分布情况了。
    【注意的是,虽然这里用到了友盟的标签,但是不用像引入友盟推送是将友盟SDK集成到项目依赖?】

    自动化打包+版本号管理
    定制生成的apk文件名、Android Studio设置默认的签名文件

    • 美团的打包方案(现阶段最快)-打包界的曙光
      用友盟传统的批量打包方式,最大的缺点就是打包时间长。在前期渠道很少时这种方法还可以接受,但只要渠道稍微增多该方法就不再适用了,原因是每打一个包都要执行一遍Gradle构建过程,效率太低。
      原理:


      此处输入图片的描述此处输入图片的描述

    到这里,思路就有了。
    1、在META-INF中放置一个类似 channel_xxx 的空文件来标识市场。
    2、在Java代码中解析这个文件名获取市场xxx即可。
    具体步骤:文章

    那Gradle构建是不是没用了呢?
    当然不是,Google老大为他做了这么多,怎么能说不用就不用呢?
    他的用处在于实现订制,比如打包出x86和arm的包,或者打出手机包和适应平板的hd包,然后借助上面的美团的打包方案工具生成多个市场,即完成了多种适配包多个市场的任务。


    加密加固APK

    • 什么是加壳?

      加壳是在二进制的程序中植入一段代码,在运行的时候优先取得程序的控制权,做一些额外的工作。大多数病毒就是基于此原理。
      
    此处输入图片的描述此处输入图片的描述
    • Android Dex文件加壳原理


      此处输入图片的描述此处输入图片的描述

      PC平台现在已存在大量的标准的加壳和解壳工具,但是Android作为新兴平台还未出现APK加壳工具。Android Dex文件大量使用引用给加壳带来了一定的难度,但是从理论上讲,Android APK加壳也是可行的。
      主要步骤:
      我们拿到需要加密的Apk和自己的壳程序Apk,然后用加密算法对源Apk进行加密在将壳Apk进行合并得到新的Dex文件,最后替换壳程序中的dex文件即可,得到新的Apk,那么这个新的Apk我们也叫作脱壳程序Apk.他已经不是一个完整意义上的Apk程序了,他的主要工作是:负责解密源Apk.然后加载Apk,让其正常运行起来。
      在这个过程中,牵扯到三个角色:
      1、加壳程序:加密源程序为解壳数据、组装解壳程序和解壳数据
      2、解壳程序:解密解壳数据,并运行时通过DexClassLoader动态加载
      3、源程序:需要加壳处理的被保护代码

    • 根据解壳数据在解壳程序DEX文件中的不同分布,本文将提出两种Android Dex加壳的实现方案。
      参考文章
      1、解壳数据位于解壳程序文件尾部
      2、解壳数据位于解壳程序文件头

    • 加固实战
      代码实现参考文章
      在实战中的坑请参考稀土掘金文章

    • 各大加密平台的对比与常见app漏洞及风险
      文章

    相关文章

      网友评论

          本文标题:APK渠道打包与APK加密加固

          本文链接:https://www.haomeiwen.com/subject/kojgsttx.html