本章的主要内容为
- 通过源码分析init_array原理so加载执行流程
- hook_linker init_array 自吐
本章的主要内容为
本章主要总结对Java层代码以及native代码的hook
HASH,一般翻译做散列、杂凑,或音译为哈希,是把任意长度的输入(又叫做预映射pre-image)通过散列算法变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,所以不可能从散列值来确定唯一的输入值。简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。
本章内容主要为RSA密码的原理以及定位
分组密码在应用和协议的加解密中比较常用,非对称加密RSA因为加密效率的原因更多的用在密钥的分发方面
非对称密码中的RSA在当前互联网时代被广泛使用(网站、app、协议、桌面应用、服务器等等)。RSA加密算法是公钥密码体制中的一种,改算法基于数学理论而不是对称密码中的混淆和扩散。RSA密码算法当中加密和解密使用的是不同的密钥,因此被称为非对称密码。RSA是1977年由罗纳德·里维斯特、阿迪·萨莫尔和伦纳德·阿德曼一起提出的。RSA就是他们三人姓氏开头字母拼在一起的。
之前几章已经对分组密码的原理以及填充进行了详细分析,本章使用一个demo来进行实战分析
前一章了解了AES的工作模式以及在java中的hook和so中的定位,本章主要来介绍一下分组密码的填充以及工作模式
经过插件、hook等方式分析出是AES或DES之后,接下来就要判断分组密码的填充和工作模式
本章主要是学习AES如何实现,如何对java中的AES方法进行hook,以及定位so文件中的AES
这里以AES-128为例,会对明文分组进行10轮迭代运算,加密的第1轮到第9轮的函数一样,包括4个操作:字节替换、行位移、列混合和轮密钥加。最后一轮迭代不执行行列混合。另外,在第一轮迭代之前,先将明文和原始密钥进行一次异或加密操作。
本章内容主要是DES加密的原理和如何在Java以及SO中识别DES算法
本章主要使用上一章开发的RC4代码作为例子进行分析,如何在逆向分析中识别RC4算法,以及如何通过编写frida代码来获取RC4的密钥。
本章的主要内容为对RC4算法原理的了解和实现
RC4是序列密码中用的非常广泛的一个加解密算法