本文来自网易云社区

安卓App安全包含很多内容,包括混淆代码、整体Dex加固、拆分 Dex 加固、虚拟机加固等方面。事实上,这些内容也是国内近几年Android App安全保护的一种主要趋势。

混淆代码

Java代码是非常容易反编译的,作为一种跨平台的、解释型语言,Java 源代码被编译成中间“字节码”存储于class文件中。由于跨平台的需要,这些字节码带有许多的语义信息,很容易被反编译成Java源代码。为了很好地保护Java源代码,开发者往往会对编译好的class文件进行混淆处理。

混淆就是对发布出去的程序进行重新组织和处理,使得处理后的代码与处理前代码完成相同的功能,而混淆后的代码很难被反编译,即使反编译成功也很难得出程序的真正语义。ProGuard就是一个混淆代码的开源项目,能够对字节码进行混淆、缩减体积、优化等处理。

Proguard处理流程图如下所示,包含压缩、优化、混淆、预检四个主要环节:

1. 压缩(Shrink):检测并移除代码中无用的类、字段、方法和特性(Attribute);

2. 优化(Optimize):对字节码进行优化,移除无用的指令。优化代码,非入口节点类会加上private/static/final,没有用到的参数会被删除,一些方法可能会变成内联代码;

3. 混淆(Obfuscate):使用a、b、c、d这样简短而无意义的名称,对类、字段和方法进行重命名;

4. 预检(Preveirfy):在Java平台上对处理后的代码进行预检,确保加载的class文件是可执行的。

网易云 Android 应用加固 免费试用,有效防止应用被逆向分析、反编译、二次打包,核心功能包括 DEX 加固,SO 加密保护,内存防 Dump 保护,防调试器,防模拟器等。

相关文章:
【推荐】 网页设计简史看设计&代码“隔膜”
【推荐】 知物由学 | 广告欺诈:如何应对数字广告里分羹者?
【推荐】 BigData – Join中竟然也有谓词下推!?

最新文章

  1. cf 710 E Generate a String
  2. SOC芯片的FPGA原型验证
  3. 早上3:30左右起来发现时候电脑在一致叫唤就是一个usb的接口可能是鼠标
  4. State Machine.(状态机)
  5. 65. Reverse Integer && Palindrome Number
  6. 阅读《effective java-第17条》遇到的问题解决与分享
  7. git的使用方法总结
  8. SQL Server跨数据库 增删查改
  9. java学习笔记之集合家族2
  10. 页面间固定参数,通过cookie传值
  11. 使用SecureCRT脚本备份网络设备配置的一点感悟
  12. 【XMPP】Smack源码之初步认识
  13. Exception 04 : java.lang.ClassNotFoundException: Could not load requested class : org.hsqldb.jdbcDriver
  14. BZOJ3669 膜法森林 - LCT
  15. python中@staticmethod与@classmethod
  16. (P2022 有趣的数)||(zoj Little Sub and Mr.Potato's Math Problem)(思维)
  17. Windows 安装 adt-bundle的方法
  18. WPF中的命令与命令绑定导航
  19. I Hate It---hdu1754线段树
  20. mtr 命令详解

热门文章

  1. 【模板】Splay总结
  2. Jenkins+maven(testng)项目(本地项目配置)
  3. 自动化构建工具grunt的学习
  4. 【数据结构】浅谈倍增求LCA
  5. Excel批量导入商品,遇到导入失败记录到另一个Excel中供下载查看
  6. 霍金:AI或许能根除疾病和贫穷,但也可能摧毁人类 | GMIC 2017
  7. Oracle中常用的语句
  8. hashMap 和 linkedHashMap 的区别和联系
  9. netstat命令的用法
  10. Qt 项目主进程接收Alarm 后在GUI上显示,并且可以有选择性输出文件