文章目录[隐藏]
密码学学习记录 15 / 18
- 密码学学习记录|hash md5 算法
- 密码学学习记录|hash md5 算法练习样本一
- 密码学学习记录|hash md5 算法练习样本二
- 密码学学习记录|hash md5 算法练习样本三 Shield MD5
- 密码学学习记录|hash sha1 算法
- 密码学学习记录|hash sha1 算法练习样本一
- 密码学学习记录|hash sha256 算法
- 密码学学习记录|hash sha256 算法练习样本一
- 密码学学习记录|hash sha512 算法
- 密码学学习记录|hash hmac 算法
- 密码学学习记录|hash hmac 算法练习样本一 Shield HMAC MD5
- 密码学学习记录|des 加解密算法
- 密码学学习记录|des - 3des 算法
- 密码学学习记录|aes 加解密算法
- 密码学学习记录|aes 算法练习样本一 Shield Aes
- 密码学学习记录|aes dfa 练习样本一
- 密码学学习记录|aes dfa 练习样本二
- 密码学学习记录|aes dfa 练习样本三
前言
上一篇说了 aes 查表法的实现。正巧小黄书 Shield Aes 部分就是魔改的查表法。这一篇就拿小黄书练练手
shield aes
- 文案来自龙哥 csdn 文章
Shield 采用的是表合并实现的 AES,仔细瞧瞧的话,感觉样本像是改的 OpenSSL 的代码。AES 魔改点选择的也很隐蔽,修改了密钥扩展中需要用到的 Rcon,硬编码在了样本中,非常的好。
Tips:注意龙哥这里说只是改了 Rcon,但是我在实现的时候好像不是这样,连同密钥扩展也魔改了,也许这里是我代码逻辑写的有问题 QaQ(小声逼逼:可能是龙哥他老人家记忆错乱了)
小黄书 shield aes 是 aes-128/cbc 模式解密的,下面来简单看下 so
aes iv
也是硬编码在 so
文件中。地址 0x44722
0x4B638, 0x4B27C
这两个函数,是密钥扩展函数,其中使用到了 TBox1-8
八个大表,还有 dword_AAB90
这是 Rcon
。都同样硬编码在 so
文件中
经过分析测试,只需要修改密钥扩展函数,跟 Rcon 即可,完成解密。使用 aes 标准实现也是可以的,效果相同,下面来测试一下看看
unidbg
大家应该都知道 shield aes 是对 hmac 进行解密,直接在 0x449DA 处下个断点
查看 r0
数据,这是 hmac base64 decode
之后的结果
查看 r2
数据,这是 aes key
单步执行查看参数五的数据,这里就是解密后的结果了
使用 python
跑一下,解密结果相同