总结自https://www.bilibili.com/video/BV1M541147Au
https://www.bilibili.com/video/BV1JK4y1b79N
混淆≠加固
AS自带代码混淆加固(还是可以看到)×
360加固(都用已被破解)×
乐固、爱加密...
基于dex文件加固√
什么是反编译、如何防止、Apk文件基本构造
反编译:利用编译程序从源语言编写的源程序产生目标程序的过程。
AES :自带的加密算法,操作文件IO即可;
jar-->dx.bat工具--dex
dex-->dex2jar工具-->jar
一般反编译是怎么做的:
Zip文件解压apk-->dex2jar工具--->将class.dex转变成jar包--->jd-gui工具---->看class文件
Apk加固总体架构
![](https://img.haomeiwen.com/i14355128/6227b08c14b6a24d.png)
1、apk拆分成dex源 和剩余文件(签名...)
2、把dex源--》 AES加密--》 生成 新dex
3、新dex + 壳dex ---》生成新文件写回apk
4、这时的apk不能直接运行的
5、重新签名生成最终apk
![](https://img.haomeiwen.com/i14355128/fdbf767e30950377.png)
所需知识 :Apk打包基本流程
摘自:https://blog.csdn.net/jason0539/article/details/44917745
流程概述(详情看上方链接):
1、打包资源文件,生成R.java文件
【输入】Resource文件(就是工程中res中的文件)、Assets文件(相当于另外一种资源,这种资源Android系统并不像对res中的文件那样优化它)、AndroidManifest.xml文件(包名就是从这里读取的,因为生成R.java文件需要包名)、Android基础类库(Android.jar文件)
【工具】aapt工具
【输出】打包好的资源(bin目录中的resources.ap_文件)、R.java文件(gen目录中)
2、处理aidl文件,生成相应java 文件
【输入】源码文件、aidl文件、framework.aidl文件
【工具】aidl工具
【输出】对应的.java文件
3、编译工程源代码,生成相应class 文件
【输入】源码文件(包括R.java和AIDL生成的.java文件)、库文件(.jar文件)
【工具】javac工具
【输出】.class文件
4、转换所有class文件,生成classes.dex文件
【输入】 .class文件(包括Aidl生成.class文件,R生成的.class文件,源文件生成的.class文件),库文件(.jar文件)
【工具】javac工具
【输出】.dex文件
5、打包生成apk
【输入】打包后的资源文件、打包后类文件(.dex文件)、libs文件(包括.so文件,当然很多工程都没有这样的文件,如果你不使用C/C++开发的话)
【工具】apkbuilder工具
【输出】未签名的.apk文件
6、对apk文件进行签名
【输入】未签名的.apk文件
【工具】jarsigner
【输出】签名的.apk文件
7、对签名后的apk文件进行对其处理
【输入】签名后的.apk文件
【工具】zipalign工具
【输出】对齐后的.apk文件
![](https://img.haomeiwen.com/i14355128/29e5e4d3f5ad2efe.png)
加固总体框架。
![](https://img.haomeiwen.com/i14355128/d345b0b5a1eaf97b.png)
壳文件生成:组件化开发生成一个model,生成aar文件(除了没有签名,其他跟apk一样)。里面是jar,根据上面知道的jar可以通过工具+代码转换成dex。
为什么是两个系列的dex?
通过壳dex文件,解密-->加密的源dex
加固代码流程:
1读取apk文件解压缩;
2拿出 所有的dex文件,对他们AES加密;
3加密后重新写回原文件名的文件中;(文件io操作)
4、拿到aar的壳文件:解压缩找出jar包--》用cmd命令(dx.bat工具)转变成dex
![](https://img.haomeiwen.com/i14355128/89f4c37a46ad16d0.png)
5、壳dex和加密后的源dex合并(写到一个文件)。
6、签名
7、安装运行
8、apk运行时解密,统一解密加载dex
dex文件加载技术ClassLoader双亲委托机制:谁先加载就用谁作为执行的class。热修复原理。
dex1、dex2、都有aa类。当dex2 里的aa有bug可以使dex1里先运行aa从而间接修改了bug。
热修复原理解析:与加固原理技术是同一套
网友评论