IO及序列化

IO及序列化学习完成后,我能用用他们做什么?
数据的加解密
文件的读写
网络数据的传输

加解密的核心原理

加密原理其实很简单,通俗的说就是打乱所加密文件的内容,举个简单例子:你的桌面图标是不是可以按顺序排列,按时间排列,按大小排列,按内容排列?对的就是这个原理 加密就是打乱信息内容,比如把第一个字放在最后,在吧最后一个字放在前面,按照一定的算法,给一个自己编写的函数,比如递归加密,异或加密等等,解密的时候倒过来解密,异或加密,倒过来解密就是先或在异。 有的加密,把内容打乱后在进行2次整体加密。。完了后在加…… 其实不用加密软软件:我根据加密的原理自己手动加密,一个简单的方法。。你把文件后缀名改掉,比如JPG,改成CHM,log.WIN等等。。个人倾向改成系统问价后缀,然后把改了的文件在压缩,,压缩后在吧压缩文件后缀RAR在改掉、、,,恶心吧。。多改几次。。别人怎么能打开?当然你的指导顺序在改回来。。一般我是最后改成INF或者COM系统后缀放在C盘的系统问文件夹下面。。。一般别人也不会动、。

数字签名-哈希散列

MD5算法:
MD5 用的是 哈希函数,它的典型应用是对一段信息产生 信息摘要,以 防止被篡改。严格来说,MD5 不是一种 加密算法 而是 摘要算法。无论是多长的输入,MD5 都会输出长度为 128bits 的一个串 (通常用 16 进制 表示为 32 个字符)。。
对称加密和非对称加密
加密算法分 对称加密 和 非对称加密,其中对称加密算法的加密与解密 密钥相同,非对称加密算法的加密密钥与解密 密钥不同,此外,还有一类 不需要密钥 的 散列算法。

SHA1算法:
HA1 是和 MD5 一样流行的 消息摘要算法,然而 SHA1 比 MD5 的 安全性更强。对于长度小于 2 ^ 64 位的消息,SHA1 会产生一个 160 位的 消息摘要。基于 MD5、SHA1 的信息摘要特性以及 不可逆 (一般而言),可以被应用在检查 文件完整性 以及 数字签名 等场景。

对称加密与非对称加密

AES算法:
AES 加密算法是密码学中的 高级加密标准,该加密算法采用 对称分组密码体制,密钥长度的最少支持为 128 位、 192 位、256 位,分组长度 128 位,算法应易于各种硬件和软件实现。这种加密算法是美国联邦政府采用的 区块加密标准。

RSA算法:
RSA 加密算法是目前最有影响力的 公钥加密算法,并且被普遍认为是目前 最优秀的公钥方案 之一。RSA 是第一个能同时用于 加密 和 数字签名 的算法,它能够 抵抗 到目前为止已知的 所有密码攻击,已被 ISO 推荐为公钥数据加密标准。

ECC算法:
ECC 也是一种 非对称加密算法,主要优势是在某些情况下,它比其他的方法使用 更小的密钥,比如 RSA 加密算法,提供 相当的或更高等级 的安全级别。不过一个缺点是 加密和解密操作 的实现比其他机制 时间长 (相比 RSA 算法,该算法对 CPU 消耗严重)。。

各算法比较

散列

对称加密算法

非对称算法

大厂中加密思想:算法自定义,数学与性能的考虑,CPU利用与汇编底层的融合

APK反编译原理及实战

加固的总体思想

一个程序员的故事:
辛辛苦苦找到一个对象,婚后家里主权为大,老婆管钱,导致这程序员木有经费去做一些爱做的事情。然而这个程序员很努力,平时除了上班,还能够做点外包,赚点外快。 所以他就想到了把工资卡上交,而把赚到的外快放到了自己的小金库。从此过上了性福生活。
结果被你反手一掏,小金库没了,从此欲哭无泪。
钱 = 代码
金库 = 编译过程
反手一套 = 破解过程

加固基本原理

Dex文件 是什么?

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

Apk打包 流程

加壳是在原来apk的基础上加一层保护壳,dex文件 修改了就需要重新打包,否则apk安装不了。这就需 要我们详细学习apk如何打包的,

Dex文件加 载流程

加壳后的文件是不能直接用的,dex文件是加密的, 所以我们需要对他进行解密,解密后的dex文件如何 加载?

APK加载流程

加壳步骤

1、制作原始项目的apk,这里称作original.apk;
2、制作一个壳项目(具体功能见ps),编译通过后得到它的classes.dex文件,这里称作shell.dex,而壳项目的apk称作shell.apk(需要签名);
3、制作一个加壳工具(java工程就可以),按照以下流程工作:
1)读取original.apk的byte流,并加密;
2)读取shell.dex的byte流;
3)new一个新的byte数组,长度为1)和2)的长度之和+4,因为我们要在shell.dex中保存original.apk的长度;
4)在new byte数组中写入2),写入1),写入1)的长度;
5)根据dex文件的结构,修改checksum文件头、Signature文件头和file_size文件头,最终生成一个新的classes.dex;
4、替换掉2中的shell.apk中的classes.dex,并使用工具重新签名;
5、生成的新签名apk就是我们加壳过的apk了。

脱壳流程

本文地址: http://www.yppcat.top/2022/12/06/IO加解密核心与dex文件改造过程分析/