代次 第一代 第二代 第三代 第四代 第五代
技术路线 dex透明加解密技术 函数级代理技术 so文件加壳技术 代码混淆和虚拟化技术 安全容器技术
设计思路 对每个或每组可执行文件加壳加密,增加复杂度,让破解者因为复杂无法破解,知难而退。 不让破解者拿到可执行文件及关键数据
技术原理 核心思想是把需要保护的dex文件加密后打包到APK中, 在需要使用时先解密dex再加载到内存, 然后删除解密后的明文文件, 或者直接在内存中动态解密, 不释放到文件系统。 针对第一代技术可以被dump内存的问题进行的改进, 原理是在内存中只加载一个函数代理模块, 当APP需要使用某些功能时由该代理模块去寻找真正实现功能的函数, 找到后调用该函数并且把执行结果返回给APP, 函数代理模块相对于一个中间人的角色。 由于java层的保护始终受到java虚拟机的限制, 无法防止自定义java虚拟机的***, 所以第三代技术将保护移动到了更底层的so文件上, 通过将核心代码封装到so文件中, 同时对so文件加壳保护, 并且吸取了第一代和第二代技术的优点, 对so文件进行加密和防内存dump处理。 第四代技术将保护主体移动到粒度更细的函数层, 通过自定义编译器在编译时对代码进行混淆和虚拟化保护, 隐藏真实的业务逻辑, 增加了逆向分析的难度。 第五代加固技术的核心理念是让***无法拿到实体文件,无法在系统中运行任何反编译工具,自然也就无法破解,从根本上解决APP被破解的问题; 其实现原理是使用加密容器技术,构建一个与操作系统紧密耦合的容器,  让APP运行在容器中,容器对外物理隔离,容器内白名单运行APP,外界无法直接访问容器中的APP和so以及配置等文件。 
缺点 直接对dex文件进行加解密, 逻辑简单直接, 容易实现。 解决了内存被dump的问题。 将核心代码从java层移动到了so层, 提高了破解的难度。 可以针对单个函数进行保护, 配置更灵活。 APP文件始终在加密容器中, ***无法拿到so文件, 自然无法破解, 并且同时兼容前四代技术, 可以配合使用。
缺点 由于dex文件最终需要被解密后加载到内存中, 所以可以通过dump内存获取明文数据。 技术实现复杂, 兼容性差。 由于该技术仍然使用了java虚拟机执行所有函数, ***者可以通过修改java虚拟机记录代理模块找到的所有真实函数, 从而获取明文代码。 随着脱壳技术的发展, 和自动化脱壳技术的出现, 这种防护措施的效果也越来越差。 由于代码混混淆和虚拟化保护增加了额外的业务逻辑, 导致APP性能下降和体积增大; 并且该技术不能防止程序关键校验逻辑被爆破。 需要在操作系统中安装容器运行环境, 需要操作系统控制权,必须出厂前部署、或己方技术人员安装部署。
加固的层次 java层 java层 so层 java层/so层 so层
加固介入的时间点 开发过程中/开发完成后 开发过程中 开发过程中/开发完成后 开发过程中 开发完成后
是否改变IDE环境 不改变 不改变 不改变 需改变IDE环境, 使用第三方的编译器编译代码 不改变
是否影响调试 影响 影响 影响 影响 不影响
***是否可以接触到文件实体 由于所有文件都在容器中, ***无法拿到文件
是否需要安装OS中间件 不需要 不需要 不需要 不需要 需要安装OS中间件来运行容器
适用场景 适合独立APP发布时增加安全,无需操作系统及设备绝对控制权的场景。如手机的应用、游戏、或其他单个安装的软件。 适合拥有操作系统绝对控制权的场景,或者其他场景比较固定的场景。
安卓应用反编译 适合 适合 适合 适合 不适合
java/C#应用反编译 适合 适合 适合 适合 适合、把java应用发布在容器内
python代码加密 不适合 不适合 不适合 不适合 适合、把python文件发布在容器内
单个EXE/DLL加壳加密 适合 适合 适合 适合 适合、把exe文件发布在容器内
整机保护 不适合 不适合 不适合 不适合 适合
主要厂家 已淘汰 已淘汰 爱加密,几维、360加固宝、顶象、娜迦 爱加密,几维、360加固宝、顶象、娜迦 深信达CBS

转载于:https://blog.51cto.com/13459657/2410322

APP加固反编译技术对比相关推荐

  1. 转: android apk 防止反编译技术(1~5连载)

    转: android apk 防止反编译技术 做android framework方面的工作将近三年的时间了,现在公司让做一下android apk安全方面的研究,于是最近就在网上找大量的资料来学习. ...

  2. 『贝壳找房APP』反编译到底有多简单--反编译和调试实践

    最近,在朋友圈看到有人发贝壳找房在Appstore上的下载排行榜,已进入前三.于是,我在应用宝上下载了贝壳release apk. 点击此处下载贝壳找房Apk 点击此处下载反编译debug包 Apk存 ...

  3. 《编译与反编译技术实战 》一2.3 编译器的设计与实现概述

    本节书摘来自华章出版社<编译与反编译技术实战 >一书中的第2章,第2.3节,庞建民 主编 ,刘晓楠 陶红伟 岳 峰 戴超 编著,更多章节内容可以访问云栖社区"华章计算机" ...

  4. 《编译与反编译技术实战》——第1章 实践的环境与工具 1.1 实践环境概述

    本节书摘来自华章计算机<编译与反编译技术实战>一书中的第1章,第1.1节,作者 刘晓楠 陶红伟 岳峰 戴超,更多章节内容可以访问云栖社区"华章计算机"公众号查看. 第1 ...

  5. 《编译与反编译技术实战》——2.1节编译器、解释器及其工作方式

    本节书摘来自华章社区<编译与反编译技术实战>一书中的第2章,第2.1节编译器.解释器及其工作方式,作者刘晓楠 陶红伟 岳 峰 戴超,更多章节内容可以访问云栖社区"华章社区&quo ...

  6. 《编译与反编译技术》——第一章 引论 1.1节编译器与解释器

    本节书摘来自华章出版社<编译与反编译技术>一书中的第1章,第1.1节,作者庞建民,陶红伟,刘晓楠,岳峰.更多章节内容可以访问云栖社区"华章计算机"公众号查看. 人类之间 ...

  7. 《编译与反编译技术实战》——第2章编译器实践概述

    本节书摘来自华章社区<编译与反编译技术实战>一书中的第2章编译器实践概述,作者刘晓楠 陶红伟 岳 峰 戴超,更多章节内容可以访问云栖社区"华章社区"公众号查看 第2章 ...

  8. 《编译与反编译技术》—第1章1.7节C语言程序的编译流程

    本节书摘来自华章出版社<编译与反编译技术>一书中的第1章,第1.7节C语言程序的编译流程,作者庞建民,陶红伟,刘晓楠,岳峰,更多章节内容可以访问云栖社区"华章计算机"公 ...

  9. 《编译与反编译技术实战》——导读

    前 言 "编译技术"是从事软件开发和信息安全相关工作的技术人员必须掌握的基础性技术,也是高等院校计算机科学与技术和软件专业的一门必修专业课,这是理论与实践结合非常强的领域,对提升开 ...

最新文章

  1. 自动驾驶平台,阵营, 主要传感器与场景联系
  2. win7如何设置wifi热点_xp系统怎么设置无线网络热点(电脑设置wifi热点步骤)
  3. 参考答案:05 实对称矩阵与二次型
  4. 如何提升你的能力?给年轻程序员的几条建议
  5. Swift字符串基本操作(三)
  6. Nginx文件描述符泄露?浅析FD_CLOEXEC文件描述符标志
  7. Nginx下301重定向不带www的域名到带www的域名
  8. 2种IO并发开发中的设计模式:Reactor and Proactor
  9. CentOS6.4之Linux软件包管理
  10. php脚本哪里找,我在哪里可以找到PHP-FPM RC脚本?
  11. 实现基于AD的MOSS的FORM认证方式
  12. 官宣:Linux 内核主要贡献者 Linaro「喜提」新任 CEO!
  13. Local Database Overview for Windows Phone
  14. pure-ftpd 配置
  15. phpstudy不执行php文件,phpstudy运行时突然无法报错
  16. linux查看tomcat版本信息,linux下tomcat版本查看
  17. Android 复杂的列表视图新写法 MultiType (v3.1.0 修订版)
  18. 360儿童手表显示服务器错误,360儿童卫士刷机失败怎么办 刷机方法
  19. 搭建一个misskey实例
  20. 吃饭 睡觉 打豆豆!!!

热门文章

  1. 设计模式系列之建造者模式构建实体类
  2. 拉绳位移传感器的抗疲劳测试达到多少?
  3. the jre was not found in directory 安装weblogic踩过的坑
  4. 迟来的flag,至今已有672名学长靠这套Java八股文成功入职大厂
  5. Python Web中REST API使用示例——基于云平台+云服务打造自己的在线翻译工具
  6. 入冬最冷的上海——致在外漂泊的孩子
  7. 简单学习一下AES算法:GCM、ECB、CFB、OFB等
  8. Android 进阶路线(思维导图),2018移动应用开发前景
  9. 【KingbaseES】金仓数据库V8R3/R6基础等保配置及查看(已更新)
  10. 视角来分析 腾讯 微信访客系统的一些问题 (一)