安卓逆向中常见校验与加密算法特征总结
初学安卓逆向,学习了常见的几种校验与算法,做出一些总结,希望也能带给同为初学的同学一些参考~~so库加密算法分析步骤:
绝大部分情况下,so下面的加密算法,都是调用openssl里面的加密函数
区分算法的步骤:
1,先区分是哪种类型的算法
2,再识别出是哪种加密算法
算法的类别:
取数据摘要的算法(MD5, SHA*)
对称加密的算法(AES,DES) (核心算法就是各种复杂的位异或)
非对称加密算法(RSA)(私钥,公钥)
算法调用的两种方式:
1.调用动态库的方式调用——比较容易处理
2.将openssl静态库编译进so里面——比较麻烦
两种调用方式的分析:
如果是第一种方式(动态库调用),那么这些常见的校验与加密算法与java层的类似,都是又明文关键字出现的(MD5,SHA*,AES,DES,RSA)
如果是第二种方式(静态库调用),需要了解各种算法的数据特征来判断。
SHA224的算法是SHA256的一个分支一样的存在,只是常量有区别,采用的是SHA256的算法方法。
SHA384的算法是调用的SHA512的算法方法。
各种加密算法的特征:
取数据摘要的算法(MD5,SHA*) 算法的数据特征:
由三个方法组成:1.初始化 2.运算 3.取结果
常见表现形式如下:
C:/Users/13019/AppData/Local/YNote/data/weixinobU7Vjnw__E7MQYNeQzEcuVebsYU/1218c8a2ba16422fb2593950a6184c7c/69e7064b789f40c18a0f2dd778225617.jpg
进入第一个块(初始化方法),可以看到各种算法的固定常量:
MD5有四个固定常量。SHA1算法又5个固定常量。SHA256算法有8个固定常量。
常见表现形式如下:
C:/Users/13019/AppData/Local/YNote/data/weixinobU7Vjnw__E7MQYNeQzEcuVebsYU/33d24d805b2f419793766b522ae04672/d8c4df484bcc4a9385aa0c58f47ae19b.jpg
RC4算法的特征:
有两个256次循环
AES算法特征:
一般AES的密钥长度是128bit 或 256bit,加密出来的数据是128或256的整倍数。
一般情况下密钥都是16字节。
AES的密钥不需要进行初始化,都是直接传明文密钥进来。
方法内有很多复杂的位异或xor。
验证方法:用 hook取得明文传入的密钥,然后经过算法验证是否为AES算法。
如果是CBC算法的,还会拥有一个16字节的IV
DES算法特征:
密钥长度固定8字节。
密钥需要单独初始化,需要运行一个密钥初始化函数。
会每8字节分段加密。
CBC方式会自带8字节分段加密,ebc方式需要在外面手动分段。
RSA算法特征:
非对称加密算法
密钥需要单独初始化
密钥长度一般很长,存储格式一般为base64文本
ECC算法:
密钥需要单独初始化
密钥的首字节一般为0x04 或者 0x03 ,并且长度是类似这种17或31 这种没有4字节对齐的数据
如果对你有帮助,非常渴望能得到你免费的小心心~~~~~
我碰到一个APP里面 加密了 XML 文件的好像是用了BASE64
<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<map>
<string name="iptv">ynGubkBALOC9DU3amRX25HP/TM6LOgdZ4NhLntaYFfS7cOB5FntxoSaCkZj/cALhHSZIGPQhXO0A
</string>
</map>
第一步 解密后 得到一个
81, 106, -93, -6, 71, 52, -36, 112, 120, 77, -40, 48, -88, 59, -114, -44, 7, -41, 69, -63, 39, 102, -45, -28, 69, 88, 3, 122, 51, -65, -13, 44, 95, -71, -33, 90, 35, -102, 7, 101, -76, 73, -82, 42, 42, -100, -99, 120, -107, -26, -107, 10, -43, 29, 83, 16, -55, 60, -96, -45, 16, -47, -51, 122, -105, -95, -106, 49, -2, -54, -98, 59, 6, 105, -105, -114
在往下没啥思路了
tmhacker 发表于 2019-4-22 21:09
我碰到一个APP里面 加密了 XML 文件的好像是用了BASE64
base64是一种编码,翻过来一下就好了,如果是base64编码过的字符串,会比原来增长三分之一。你这个怎么越来越长,应该是搞错了吧 水平有限目前看不懂谢谢分享 来学习一下{:1_918:} 更倾向于修改源码,变异算法。 谢谢楼主分享 学习学习了,感谢分享。 学习了,感谢分享!