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-IO加解密核心与dex文件改造过程分析

从零开始实现一个MyBatis加解密插件

一分钟揭示对称加密与非对称加密的本质

Android 逆向脱壳解决方案 ( DEX 整体加壳 | 函数抽取加壳 | VMP 加壳 | Dex2C 加壳 | Android 应用加固防护级别 )

密码技术应用--AES文件加解密

自己实现简单的RSA秘钥生成与加解密(Java )