app hmac 参数分析

app shield 算法分析 12 / 13

仅供学习研究 。请勿用于非法用途,本人将不承担任何法律责任。

const 小白龙_龙哥 = function () {}

const a = 龙哥是全能的傻宝,每天都会换一种姿势来分享各种骚操作
const b = 10月份开始准备密码学课程,11月份准备更完 aes 密码学系列课程
const c = 除了密码学,还有各种 unidng 骚操作,反 unidbg,反反 unidbg,全是出自傻宝
const d = 赶紧点击加入星球吧,买到就是赚到 !
return 无敌的龙哥,全能的傻宝

前面

前面分析了 shield 参数的生成逻辑,最后也是成功使用 python 还原,有兴趣的可以联系博主一起讨论哦
其中有个比较重要的参数就是 hmac 今天就来分析分析这个参数的生成逻辑

0x1

先清空 app 或者,重新安装,然后打开 app 抓包,切记不要登录

打开手机的这个目录,查看 s.xml 文件,hmac 就存在这个里面了,复制一段到抓包工具里搜索一下

搜索到四个结果,发现 hmac 结果都是在,响应头里,所以 hmac 是服务器下发给客户端的

来看下参数,这里依旧有 shield 参数,前面文章中分析 shield 经验时,会使用到 hmac 参数,但是请求前很明显客户端是没有 hmac 所以这里有坑,那我们就先来踩一踩

先直接复制请求参数,运算一下,结果果然不一样,那这里可能还有些细节需要处理,使用 unidbg 试试

unidbg

使用 unidbghmac 赋值为空字符串在计算,发现结果是相同的,里面有猫腻,来 console debugger

aes 逻辑的这个函数下个断点 0x117FE,好家伙直接执行结束,那就说明代码没执行到这里,往上分析

这里是判断参数一,参数二是否为空,参数一是 JNIEnv,参数二是 hmac 所以这里条件不成立,直接执行跳过返回

来到 md5 处下个断点 0x93EB0

成功断下来记录 r0 寄存器的地址 0xbffff6b0,输入 n 执行

执行完在查看数据,发现 md5 的结果为空,

再来到这里下断点 0x93EB0

查看参数一,是前面拼接的结果,参数二是 0x53,参数三是 buffer 用来存放结果数据,记录下地址 0x402920c0

n 单步执行,查看 0x402920c0 地址数据,结果已经出来了

使用 CyberChef 看看,结果相同,下面在使用 python 试试

python

前面分析到,md5 返回结果是空,所以咱们这里直接写,主要不要写空,还是依旧要给 16 个字节,因为后面要参与运算,给空就报错了

跑起来,有了运算结果,看起来是一样的,其实不对,里面还有一个坑

就是这里有个判断,hmac 为空就是 1 否则及时 2,之前分析的时候这里写死了,所以结果不对改一下

我这里直接判断写死,再跑起来,结果就一样了

写过接口测试一下

一切正常 hmac 也正常返回了

11 条评论
本文作者:
本文链接: https://www.qinless.com/?p=667
版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 qinless 的博客!
100

11 条评论

666

大佬,求源码

回复

永恒之心

大佬,6.87版本还能正常返回数据吗?没提示版本过低吗?

回复

会爬山的小脑虎

@永恒之心 可用的,一些正常,

回复

bb

大佬,我想请问下,怎么用 unidbg 把 hmac 赋值为空字符串?谢谢大佬!

回复

会爬山的小脑虎

@bb 额,直接不能赋值吗,就像变量赋值一样,

回复

bb

@bb 主要是我没搞明白要赋给哪个地址。是这样的,我直接调用lieshield.so文件来计算shield,发现计算结果和抓包结果不一致。然后看到了大佬你的这篇文章,所以想请教一下解决思路。

回复

会爬山的小脑虎

@bb 这样啊,在 libshield.so 里是通过,SharedPreferences.getString 方法读取,hmac 的,你可以在 unidbg 补环境的时候,直接返回 hmac 真正的值即可,

bb

@bb 终于解决了,十分感谢大佬!

回复

会爬山的小脑虎

@bb 客气了

zl

看了大佬有关小红书一系列的文章,受益匪浅。不过,我现在爬取过程中会进行大批量的抓取,但是发现有个请问参数xy-common-params中sid这个参数很重要,爬取过多会出现滑块问题。请问下,大佬有研究过这个sid参数的生成方式吗,可否有大批量生成这个参数的方式吗

回复

会爬山的小脑虎

@zl sid 是 数美风控生成的,跟登陆状态绑定,难搞,没深入研究过

回复

发表评论

返回顶部