原理

转载

加壳原理

加固的过程中需要三个对象:

  • 需要加密的Apk(源Apk)
  • 壳程序Apk(负责解密Apk工作)
  • 加密工具(将源Apk进行加密和壳Dex合并成新的Dex)

主要步骤:

  • 用加密算法对源Apk进行加密,形成加密的DEX文件
  • 将加密的DEX文件与壳Apk进行合并得到新的Dex文件
  • 用新的Dex文件替换壳程序中的dex文件,得到新的Apk。修改壳程序dex文件头中的checksum、signature 和file_size的信息,并且要附加加壳的apk的长度信息在dex文件中,以便我们进行解壳保证原来apk的正常运行。加完壳后整个文件的结构如下:

这个新的Apk叫作脱壳程序Apk,已经不是一个完整意义上的Apk程序了,他的主要工作是:负责解密源Apk,然后加载Apk,让其正常运行起来。

脱壳原理

  • 通过反射置换android.app.ActivityThread 中的mClassLoader为加载解密出APK的DexClassLoader,该DexClassLoader一方面加载了源程序、另一方面以原mClassLoader为父节点,这就保证了即加载了源程序又没有放弃原先加载的资源与系统代码。

  • 找到源程序的Application,通过反射建立并运行。这里需要注意的是,我们现在是加载一个完整的Apk,让他运行起来,那么我们知道一个Apk运行的时候都是有一个Application对象的,这个也是一个程序运行之后的全局类。所以我们必须找到解密之后的源Apk的Application类,运行的他的onCreate方法,这样源Apk才开始他的运行生命周期。这里我们如何得到源Apk的Application的类呢?这个我们后面会说道。使用meta标签进行设置。

产品化方案

国内提供APK加固技术方案的第三方技术公司有:娜迦、爱加密、梆梆加固、360加固、百度加固、腾讯加固等。
功能概述及其使用

阿里聚安全 链接:http://jaq.alibaba.com/

  • 上传应用
  • 提供安全扫描(漏洞扫描、恶意代码扫描、仿冒应用扫描)
  • 可以从结果知道漏洞总数,如果是认证过的开发者,可以直接得知漏洞的具体位置。其中还有部分漏洞需要付费扫描。
  • 然后我们可以进行应用加固,其中分快速加固和多渠道加固,可以按需选择 加固包下载(应用需要重新签名)

腾讯云应用乐固 链接:https://www.qcloud.com/product/cr

  • 上传应用
  • 默认服务类型:
  • 应用加固
  • 漏洞检测
  • 渠道监控
  • 可选服务类型:
  • 适配分析(每天可以有一次)
  • 质量跟踪(即接入腾讯的bugly进行异常追踪)
  • 之后我们可以得到应用的基本信息、加固包、缺陷分析、应用检测
  • 选择下载加固包(应用需要重新签名)的同时还提供了签名及多渠道打包工具、自动加固工具的下载使用

360加固保 链接:http://jiagu.360.cn/

  • 上传应用
  • 提供加固基础服务:
  • DEX文件加密
  • 防二次打包
  • APK大小优化
  • 防DEX内存截取
  • 应用盗版检测
  • 加固数据分析服务
  • 可选增强服务:
  • 崩溃日志分析(即接入360的bug追踪)
  • 支持x86框架(约增大apk大小400k左右)

梆梆加固 链接:https://dev.bangcle.com/

  • 上传应用
  • 提供功能:安全评估(更多定制化的评估,需联系客户并且收费)、应用加固(认证过的开发者还提供:报告下载,多渠道打包)
  • 评估结果提供了风险的详情,位置及解决方案
  • 提供对加固后的包再进行快速评估
  • 选择下载加固包(应用需要重新签名)的同时还提供了加固工具的下载使用

爱加密 链接:http://safe.ijiami.cn/

  • 上传应用并直接执行加密.需要注意其中有一个选项:防止二次打包,请按需选择
  • 可以对加固后的包申请渠道检测,除了加固包的下载,还提供了签名工具的下载荐

对比分析

体积(体积小的为优):360 > 腾讯 > 爱加密 > 阿里 > 梆梆

兼容性: 阿里 > 腾讯 > 360 = 梆梆 > 爱加密

启动速度(时间短为优): 阿里 > 爱加密 > 360 = 梆梆 > 腾讯

漏洞: 腾讯 > 爱加密 > 360 > 梆梆 > 阿里

参考资料

http://blog.csdn.net/jiangwei0910410003/article/details/48415225
http://blog.csdn.net/u011216417/article/details/70307031
http://xhrong.github.io/attachments/基于Android平台的软件加固方案的设计与.pdf

Android 应用加固技术综述相关推荐

  1. Android APK加固技术方案调研

    @author ASCE1885的 Github 简书 微博 CSDN 最近项目中需要实现自己的APK加固方案,因此就有了这一篇调研报告. 软件安全领域的攻防向来是道高一尺魔高一丈,攻防双方都处于不断 ...

  2. android安全加固方案,android安全加固技术

    先介绍5种android apk安全技术,其它后面补充 1.代码混淆 原理:本质就是改变类名.方法名,使代码可读性变差,进而保护代码 种类 混淆前 混淆后 class BookManager a fu ...

  3. Android APK加固技术初探

    这个主要是为了自己项目的安全考虑,在原始混淆后对应用的再次保护,其他的废话不多说,可自行去百度.在这里推荐使用360加固和腾讯加固,下载相关工具,附有的操作文档相信你都能看懂.用了360加固助手很有用 ...

  4. Android代码加固技术

    一. 对抗反编译工具 二. 对抗apk重打包 三. 对抗安卓模拟器 四. 对抗IDA调试so

  5. Android 移动安全知识技术全解(加固技术、常规漏洞、Android 逆向......),移动安全问题不容忽视

    前言 您的设备是否处于遭受攻击.劫持或损害的风险中?毫无疑问.剑桥大学的研究人员发现,87% 的 Android 智能手机有至少一个严重漏洞,Zimperium Labs 在早些时候发现,黑客只需通过 ...

  6. 【Android安全】Android应用加固综述

    Android应用加固综述 参考: APP加固技术历程及未来级别方案:虚机源码保护 - 顶象的文章 - 知乎 https://zhuanlan.zhihu.com/p/28257081

  7. Android 加固与监测,基于Android平台的恶意软件检测和软件加固技术研究

    摘要: 随着智能手机技术的发展,人们越来越多地把工作和生活的计算平台从传统的PC平台转移到移动平台.智能手机储存了大量的用户隐私,例如通信记录,位置信息等,因而成为攻击者的攻击目标.作为主流移动平台之 ...

  8. 百度android apk 加固,百度宣布开放应用加固技术 支持Android L应用

    腾讯科技讯(乐天)9月3日消息, 据了解,百度手机卫士正在建立移动安全平台,将输出"反病毒.反骚扰.应用保护"三个方面的移动安全能力,其中,应用加固服务是应用保护能力的核心技术. ...

  9. android 防止反编译 安全加固技术

    先说下加固技术发展历史 基础加固技术--1.代码混淆(proguard):2.签名比对:3.NDK(.so)库动态使用 第一代加固技术--动态加载(包括第一代加壳技术:落地加载): 第二代加固技术-- ...

最新文章

  1. floyd和迪杰斯特拉算法的路径记录方法。
  2. mysql如何防止插入重复数据_防止MySQL重复插入数据的三种方法
  3. 压力测试对于BCH真的有意义吗?
  4. 基础数学:关于二次无理数
  5. oracle for循环
  6. [Jinkey 原创]震惊!iOS 系统居然自带悬浮窗口调试工具
  7. Xposed从入门到弃坑:0x03、XposedHelpers类解析
  8. azure blob_如何在Azure Blob存储中恢复意外删除
  9. 001 基本的环境的安装
  10. 奇异值分解(SVD)和最小二乘解在解齐次线性超定方程中的应用
  11. 20. 有效的括号 python
  12. 计算机组装主板,组装电脑如何选择合适的主板 组装电脑选择合适主板介绍【详解】...
  13. vue 请求word文档流并打印预览
  14. MacBook Pro 2017版(带multi-touch bar)安装使用 windows10
  15. CSS3 ---奔跑的小人
  16. 让你立刻爱上数学的10个算术游戏
  17. 注解和注解处理器APT
  18. 物联网时代数据数据库如何选型?
  19. 【USB笔记】USB 2.0 帧开始包Start-of-Frame Packets
  20. java md5加密长度_java中使用MD5加密算法进行加密

热门文章

  1. Winform如何进行左边菜单栏,右边内容的设计
  2. 【原创】【歌曲评论】【之一】【对不起,我爱你】
  3. 正则表达式中的捕获非捕获匹配
  4. [iOS]xib中UILabel的Attributed属性介绍
  5. Rive动画使用介绍(Flutter)
  6. Docker Desktop提示“Docker Desktop Stopped”解决方案
  7. 聚焦乌镇:世界互联网大会,领先成果发布集锦
  8. echart仪表盘旋转_使用echarts绘制漂亮的渐变键盘仪表盘
  9. c语言笔记照片_C语言基础知识笔记
  10. Android 开机启动慢的原因分析