加密方案概述

下面整理一下常用的安卓的加密技术和方案:

  • 代码混淆
    • 常用(Android自带的)ProGuard
  • 加固
    • 发展历史
      • 目前加固技术基本都发展到第三代
        • 前2代的加固技术破解难度不大,基本被淘汰
      • 第三代加固技术,由于各加固服务商加固原理大致相同
    • 第三代加固技术主要有2种方式:
      • 对源apk整体做一个加固,放到指定位置,运行的时候再解密动态加载
        • 对apk加固的破解,叫做:脱壳=去壳
          • == Dex Method代码动态解密
      • 对so进行加固,在so加载内存的时候进行解密释放
        • 对so的加固的破解,叫做:so库反编译
          • == So代码膨胀混淆

另外参考这里的总结:

  • 鉴于现在很多破解脱壳方案,都是基于Hook框架,去从安卓app中导出dex文件
    • 典型的hook框架
      • XPosed:从根上Hook了Android Java虚拟机
      • Cydia:支持jni和java层的HOOK功能
    • 再去从dex中转换出java代码
  • 而各大安卓厂商意识到了,如果只是代码用Java写,代码运行在Java层,则被破解和被篡改的概率很大
    • 所以很多都把重要代码放到JIN层了
      • 比如:
        • 微信 的 数据库的连接操作
    • 不过从破解的技术角度说
      • 加壳 -》 我脱壳
      • 你把操作放在so -> 我就用IDA调试
      • 你有反调试(检测?) -> 我就绕过去
    • 当然这样会增加破解难度
      • 对于普通技术不行的,还是可以防得住的
      • 但是对于高手,有一定毅力和能力,还是可以破解的

如何防护安卓的安全

  • 首要的:加强业务逻辑
    • api接口通讯
      • 全部接口都实现https
        • 且做证书绑定 ssl pinning
  • 其次:加强安全防破解技术
    • 代码
      • 代码混淆
        • 首选:Obfuscator-LLVM
        • 其次:ProGuard
    • 其他防护
      • VMP
        • 给dex(中的核心逻辑)做VMP
        • 给SO库(中的核心逻辑)做VMP
      • 加壳
        • 用第三方加壳服务或自己实现
          • 第三方加壳服务商
            • 腾讯乐固legu
            • 360加固保
            • 网易易盾

results matching ""

    No results matching ""