代码混淆检测 - 类名替换 一、代码混淆简介 1. 内容介绍 【1】混淆是一种用来隐藏程序意图的技术,可以增加代码阅读的难度,使攻击者难以全面掌控app内部实现逻辑,从而增加逆向工程和破解的难度 【2】主要工作 通过对代码类名,函数名做替换来实现代码混淆保护 简单的逻辑分支混淆 2. 混淆工具(第三方软件) 【1】Proguard 【2】DashO 【3】Dexguard 【4】DexProtector 【5】ApkProtect 【6】Shield4j 【7】Stringer 【8】Allitori 3. Proguard用法 【1】http://www.jianshu.com/p/60e82aafcfd0 【2】http://blog.isming.me/2014/05/31/use-proguard/ 4. 参考链接 http://ilovejoe.iteye.com/blog/2171846 http://www.droidsec.cn/android应用安全开发之源码安全/ 二、触发条件 1. 混淆率rate < 60% 【1】统计所有源码文件数(.class文件数) - 根据后缀判断smali文件数 - 去除文件名包括'$'符号的文件,这种符号表示内部类或匿名类 - a.smali和a$ab.smali两个文件,表示ab是a中的内部类,源码中没有ab.class文件 【2】统计代码混淆的文件数 len(smali_name) <= 3 三、漏洞原理 【1】代码混淆率较低,攻击者很容易阅读反编译后的代码,并掌控APP内部实现逻辑,从而增加程序被破解的风险 【2】更多内容 http://www.droidsec.cn/android应用安全开发之源码安全/ 四、修复建议 【1】建议使用Proguard等第三方工具对源码进行进一步混淆,增加代码阅读的难度,更好地隐藏程序意图