slslsl 发表于 2023-2-28 15:29

新人第一次某头像app接口请求sign分析

本帖最后由 slslsl 于 2023-3-2 16:42 编辑

新人学习app逆向第一次尝试分析过程记录
分析对象:某头像app,界面如下


首先通过模拟器抓包,成功抓取到其中的数据接口,发现其中带有sign参数



将其余参数修改后重新请求,返回签名失败,得出结论所有请求参数均参与了sign签名计算



根据特征盲猜sign的计算方法为请求参数排序后进行md5计算得出,于是乎尝试进行sign值计算还原,尝试了几种方案,均未成功还原出正确的sign值

开始尝试apk文件逆向,直接丢入工具中发现有加壳


那么尝试使用frida-dexdump进行脱壳(具体过程就不放上来了)
完成脱壳后得到dex文件,并全部拖入jadx中进行分析



直接文本搜索可能的值 "sign=" 得到结果如下





找到对应代码处,发现该sign值通过一个signTopRequest方法计算得出



其中传入了三个参数
treeMap应该为参数体,accessKeySecret为加密相关secret,signatureMethod为请求方法
参数对应下图具体方法实现




返回上一层尝试查找具体accessKeySecret值,发现只定义了相关变量,以及get、set方法


根据写法进行搜索setAccessKeySecret未找到调用位置。

目前卡在这里,望各位大佬指点后续逆向思路

附相关apk文件下载地址
http://www.51txapp.com/app/wygxw.apk


--------------------3月2号更新--------------------------

已成功解决

通过搜索其他接口中固定关键字,找到了一个setParams设置参数的方法



可以看到sign的值由后面的formatUrlMap计算得出,继续跟进



这里就很明显了,看到其中给返回值str赋值的部分
str = ******.APP_KEY + sb.toString()

于是乎顺利找到最后一块拼图!

最终成功实现正确sign值计算。

感悟:思路灵活是最重要的,往往一条路容易走进死胡同,及时转变思路,寻找其他突破口,不经意间就会有收获!

正己 发表于 2023-2-28 22:27

感觉是调用系统的加密库,试试算法助手去hook,然后根据日志去判断,算法助手在我帖子里有

slslsl 发表于 2023-2-28 22:48

正己 发表于 2023-2-28 22:27
感觉是调用系统的加密库,试试算法助手去hook,然后根据日志去判断,算法助手在我帖子里有

好的膜拜大佬!看你教程来的,这就去试一下

naobing 发表于 2023-3-21 19:15

我也在做另一个app接口请求sign分析,遇到了问题搞不懂了
今天看到你的这个帖子,我就想走一遍你的过程。下载你的这个apk之后,frida-dexdump进行脱壳,得到了21个dex文件,拖到jadx里面去看,连”sign=“都搜不到,不知道是哪里出了问题

slslsl 发表于 2023-3-22 19:18

naobing 发表于 2023-3-21 19:15
我也在做另一个app接口请求sign分析,遇到了问题搞不懂了
今天看到你的这个帖子,我就想走一遍你的过程。 ...

可以分享一下,俺也来一起练个手试一试

naobing 发表于 2023-3-22 23:07

slslsl 发表于 2023-3-22 19:18
可以分享一下,俺也来一起练个手试一试

可以从这里来下载。不过需要手机号注册、登录,稍微有点麻烦。

https://www.apk8.com/softapk/8323.html
页: [1]
查看完整版本: 新人第一次某头像app接口请求sign分析