混淆:
针对项目代码,代码混淆通常将代码中的各种元素(变量、函数、类名等)改为无意义的名字,使得阅读的人无法通过名称猜测其用途,增大反编译者的理解难度。
虽然代码混淆可以提高反编译的门槛,但是对开发者本身也增大了调试除错的难度。开发人员通常需要保留原始未混淆代码用于调试。
操作时机:项目打包时
加固:
针对apk,加固是多维度的安全防护方案,包括反破解、反逆向、防篡改等,可以防止应用被各类常见破解工具逆向,安全性要远大于单纯的代码混淆。
操作时机:项目打包成的apk文件

以上,混淆用于让apk被反编译后获取的代码难理解,加固用于让apk难于被反编译。两种操作都是对项目的安全措施,两个操作是不冲突的,可以选择其一,也可以两个操作都做。

--------------------------------------------------------------------------------------------

加固原理:

对App进行加固,可以有效防止移动应用被破解、盗版、二次打包、注入、反编译等,保障程序的安全性、稳定性。对于金融类App,尤其重要。

对App dex进行加固的基本步骤如下:
1. 从App原始apk文件里获取到原始dex文件
2. 对原始dex文件进行加密,并将加密后的dex文件和相关的存放到assert目录里
3. 用脱壳dex文件替换原始apk文件里的dex文件;脱壳dex文件的作用主要有两个,一个是解密加密后的dex文件;二是基于dexclassloader动态加载解密后的dex文件
4. 因为原始apk文件已经被修改,所以需要删除原始apk的签名信息,即删除META-INF目录下的.RSA、.SF 和MANIFEST.MF文件
5. 生成加固后的apk文件
6. 对加固后的apk文件进行签名,apk加固完成。

原理分析:
1.为什么要对原始dex进行加密,同时用脱壳dex文件替换原始dex文件?大部分的apk反编译工具(dex2jar、apktools、jui等)都是对dex文件进行反编译,将dex文件反编译成smail,然后再转化成class文件进行阅读和修改。用脱壳dex替换原始dex文件之后,用上面的反编译工具反编译apk文件,只能看到脱壳程序的class文件,看不到apk本身的class文件。对dex文件进行加密,这样即使第三方拿到了dex文件,以为无法解密,也就无法对其进行解析和分析。
2.怎么确保apk功能正常运行?加固后的apk启动之后,脱壳dex文件会对加密后的dex文件进行解密,然后机遇dexclassload动态加载解密后的dex文件。从用户的角度,加固前后App的功能和体验基本是一样的。

这个和插件化的原理是一样的。可以参见http://blog.csdn.net/jiangwei0910410003/article/details/48104581
3.dex加固主要是防止被静态反编译,进而获取源码并修改

加固工具:

1、腾讯加固

2、360加固

最新文章

  1. jQuery系列:选择器
  2. shell循环语句
  3. TCP通信丢包原因总结
  4. VS2010 密钥问题
  5. soj4271 Love Me, Love My Permutation (DFS)
  6. selenium处理rich text(富文本框)
  7. Oracle 截取、查找字符函数(持续更新)
  8. 父页面刷新 保持iframe页面url不变
  9. stm32 dac 配置过程
  10. Odoo constraints 使用教程
  11. VS2010制作网站自定义安装程序 转
  12. XenServer 使用笔记
  13. C++ Concept 和Java 接口
  14. element-ui table 嵌套
  15. python+selenium五:多窗口切换与获取句柄
  16. python记录day_20 多继承
  17. python DRF操作流程
  18. arm学习之汇编跳转指令总结
  19. rtop:一个通过 SSH 监控远程主机的交互式工具【转】
  20. NCPC2016-A-ArtWork

热门文章

  1. 树莓派配置wifi链接
  2. ReentrantLock 详解
  3. HDU 1006 Digital Roots
  4. 【个人杂谈】MacBook Pro的使用心得
  5. java发送http get请求的两种方式
  6. MySQL:windows中困扰着我们的中文乱码问题
  7. 如何用Python编写一个聊天室
  8. 2016 ACM/ICPC亚洲区青岛站现场赛(部分题解)
  9. 利用谷歌网站的翻译网站,实现谷歌翻译api
  10. echarts画图时tooltip.formatter参数params不会更新(转载)