一、分类
1.混淆 (java文件)
2.加固 (Dex文件)
3.防止应用被调试
4.防止应用被Hook操作
5.防2次打包 - 签名校验防护策略
二、混淆
功能
1.压缩(在打包的时候来检查并移除代码中没有用到的字段、方法、属性和类)
2.优化(它可以对字节码进行优化,对.class文件里无用的操作移除)
3.混淆(把有意的名词变成无意的名词)
4.预检测(第二次进行处理和检测)
作用
1.起到了保护代码的作用
2.精简了程序的内存大小
混淆解析:https://www.jianshu.com/p/d5223070a432
混淆面试:https://www.jianshu.com/p/aafb3a2a1169
三、加固
大致过程:将目标apk中的dex取出与壳程序的dex加密合并,生成新的dex,同时修改Manifest.xml入口Application类。删除META-INF文件,重新签名。
整体加密步骤:
1.反编译目标app(sourceProject.apk),得到sourceProject文件;sourceProject.apk来源于SourceProject工程
2.修改sourceProject文件中的manifest文件,将自定义Application设定为“org.hackcode.ProxyApplication”
3.拿到sourceProject文件中的dex文件,压缩为TargetApk.zip
4.反编译壳apk:apktool.bat d shellApk.apk,得到shellApk文件
5.拿到shellApk文件下的classes.dex和TargetApk.zip,加密合成新的classes.dex文件
6.新合成的class.dex替换sourceProject文件中的class.dex
7.删除sourceProject文件中的META-INF文件,重压缩成zip文件
8.重新签名
步骤2主要是是为了加载壳dex中的代码;正确解析dex。
步骤6主要是jiaguApk工程的工作。
参考
加固步骤:http://blog.itpub.net/31562043/viewspace-2284074/
加固原理:https://www.cnblogs.com/cute/p/4809386.html
加固类别:https://www.cnblogs.com/baiqiantao/p/9286449.html
防应用调试
https://blog.csdn.net/jiangwei0910410003/article/details/65935044
防应用被hook
https://blog.csdn.net/jiangwei0910410003/article/details/52523679
防2次打包
参考”https://blog.csdn.net/jiangwei0910410003/article/details/80375831