一、反编译

1.定义:利用编译程序从源语言编写的源程序产生目标程序的过程。

2.怎么进行反编译?

先了解apk对文件构造

android逆向aes加密 aes加密apk_反编译

二、加固方案的手段

1.反模拟器:模拟器运行apk,可以用模拟器监控到apk的各种行为,所以在实际的加固apk运行中,一旦发现模拟器在运行该APK, 就停止核心代码的运行。

2.代码虚拟化:代码虚拟化在桌面平台应用保护中已经是非常的常见了,主要的思路是自建一个虚拟执行引擎,然后把原生的可执 行代码转换成自定义的指令进行虚拟执行。

3.加密:样本的部分可执行代码是以压缩或者加密的形式存在的,比如,被保护过的代码被切割成多个小段,前面的一段代码先把后面的代码片段在内存中解密,然后再去执行解密之后的代码, 如此一块块的迭代执行。

三、加固的方案

android逆向aes加密 aes加密apk_反编译_02

四、加固总体框架

android逆向aes加密 aes加密apk_密钥对_03

1.Dex文件是什么?

加固的目的是保护dex文件,直接而言就是对dex文件进行操作,对dex文件动刀子,必须知道dex文件是什么,能否直接动刀子。

android逆向aes加密 aes加密apk_密钥对_04

2.apk打包流程:加壳是在原来apk的基础上加一层保护壳,dex文件修改了就需要重新打包,否则apk安装不了。

android逆向aes加密 aes加密apk_java_05

3.加密过程

android逆向aes加密 aes加密apk_反编译_06

4.apk文件如何运行(脱壳)

android逆向aes加密 aes加密apk_android逆向aes加密_07

五、对称加密和非对称加密

对称加密: 加密和解密的秘钥使用的是同一个

例如:DES、3DES、Blowfish、IDEA、RC4、RC5、RC6 和 AES


非对称加密算法: 公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,


只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用


对应的公开密钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种


算法叫作非对称加密算法


 

加加固固的目的是保护dex,直接而言就是对dex文件进


行操作,对dex文件动刀子,必须知道dex 么,能否直接动刀子。什么是源dex?什么是壳dex?


加固的目的是保护dex,直接而言就是对dex文件进


行操作,对dex文件动刀子,必须知道dex文件是什


么,能否直接动刀子。什么是源dex?什么是壳dex?