Android-IO加解密核心与dex文件改造过程分析
Posted 天津 唐秙
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android-IO加解密核心与dex文件改造过程分析相关的知识,希望对你有一定的参考价值。
文章目录
IO加解密核心与dex文件改造过程分析
技术点
1.IO应用加解密核心原理
2.文件加密的意义
3.文件加密与文件混淆
4.初探加密算法
5.dex文件加密与解密
6.APK打包流程与加壳过程
7.APK解包流程与脱壳过程
加密
加密就是自己搞一套自己知道的搞乱手段
加密在整体业务的一个具体地位:
1.做加密的人----》算法
2.用算法的人
3.算法 = 方案 = 搞乱数据的方案 = 搞乱 + 恢复
数字签名-哈希散列
数字签名:一般用来固定某个数据,然后进行加密后得到密文
作用:
证据的固定 SHA1
MD5算法:
MD5用的是哈希函数,它的典型应用是对一段信息产生信息摘要,以防止被篡改,严格的说,MD5不是一种加密算法而是摘要算法,无论多长的输入,MD5都会输出长度为128bits的一个串,通常用16进制,表示为32字符。
对称加密和非对称加密
加密算法分对称加密和非对称加密,其中对称加密算法的加密和解密密钥都相同,非对称加密算法的加密密钥和解密密钥不同,此外,还有一类不需要密钥的散列算法。
SHA1算法:
SHA1和MD5一样流行的信息摘要算法,然而HA1比MD5安全性更高,对于长度小于2^64位的消息,SHA1会产生一个160位的消息摘要,基于MD5、SHA1的信息摘要特性以及不可逆,可以被用来检查文件完整性,数字签名等场景
对称加密和非对称加密
AES算法
AES加密算法是密码学中的高级加密标准,该加密算法采用对称分组密码体制,密钥长度的最少支持位128位,192位,256位,分组长度128位,算法应易于各种硬件和软件实现,这种加密算法是美国联邦政府采用的区块加密标准
RSA算法
RSA加密算法是目前最有影响力的公钥加密算法,并且被普遍认为是目前最优秀的公钥方案之一,RSA是第一个能同时用于加密和数字签名的算法,它能够抵抗到目前为止已知的所有密码攻击,已被ISO推荐为公钥数据加密标准。
ECC算法
ECC也是一种非对称加密算法,主要优势是在某些情况下,它比其他的方法使用更小的密钥,比如RSA加密算法,提供相当的更高等级的安全级别,不过一个缺点是加密和解密的操作的实现比其他机制时间更长(相比于RSA算法,该算法对CPU的消耗严重)
各算法比较
android对于加密的应用
APK加固
1.加固的基本原理
(1)Dex文件是什么?
加固的目的是保护dex,直接而言就是对dex文件进行操作,对dex文件是什么,是什么源dex,什么是壳dex?
(2)Apk打包流程?
加壳是在原来apk的基础上加上一层保护壳,dex文件修改了就需要重新打包,否则apk安装不了,这就需要我们详细学习apk如何打包
(3)dex文件加载流程?
加壳后的文件是不能直接用的,dex文件时加密的,所以我们需要对他进行解密,解密后的dex文件如何加载?
壳程序
(1)什么是壳程序?
他就是能够在自己的源程序运行之前跑的一个程序,因为dex文件被加载了之后,需要dexClassLoad进行加载才运行
(2)思路
壳的思路就是在不动当前源程序的dex的时候,去加壳的dex,两段代码分别做成两个dex,然后生成新的apk,将apk进行4字节对齐整理,目的压缩空间,然后进行签名
(3)弊端
因为是两个dex,一个加密,一个解密,一定程度上相当于没加密,因为加密解密程序给出去了,因为在破解和防护的过程中,核心思路是让别人猜不到你的想法,再深一层,用C写,打SO库,多文件,SO做混淆搞几个假对象出来
以上是关于Android-IO加解密核心与dex文件改造过程分析的主要内容,如果未能解决你的问题,请参考以下文章
Android 逆向脱壳解决方案 ( DEX 整体加壳 | 函数抽取加壳 | VMP 加壳 | Dex2C 加壳 | Android 应用加固防护级别 )