首页
社区
课程
招聘
[原创]新手向-某APPsign签名参数分析
发表于: 2023-11-13 15:53 7857

[原创]新手向-某APPsign签名参数分析

2023-11-13 15:53
7857

分析该APP的包请求,在Fiddler中发现一个请求包:

想把其中的签名弄清楚,然后用python去模拟协议。


原始返回的数据是protobuf的格式,通过修改请求头Accept,可以让服务器返回json的数据格式。

具体操作步骤为:直接将请求头中的Accept: application/x2-protostuff; charset=UTF-8,更改为:Accept: application/json; charset=UTF-8

但是如果直接请求,浏览器会报签名错误:


注意看请求头中,有两个签名(sign和sg字段),因此这两个签名需要逆向解决,另外还需要知道oak(可能是key)是什么东西。


所以直接将app拖到jeb里面,首先通过查找网址,可以搜索到其构造URL的代码逻辑块,位于:


通过上述定位,可以找到发起请求的入口:


再往下分析,查看函数makeRequestByPkgName,这个调用就是通过包名获取信息的函数接口:


这里new了一个请求ProductDetailRequest,实现了com.nearme.network.request.IRequest接口,进入到请求类中,查看具体的实现:

上图中可以发现,请求操作在com.nearme.network.c类中的函数中,查看函数上一跳,发现请求接口:com.nearme.network.extend.d.request

继续分析可以发现该请求接口设置了拦截器并通过initHeader函数初始化了请求头:

通过分析请求头中的参数来源,将部分重要参数和对应的说明,以及抓包中获取的值列表如下:


0:手机

1:折叠设备

2:平板

浏览器UA信息(URLEncode

数据格式是:设备生产商/设备型号/安卓系统版本号/安卓版本/设备ROM版本号/APP_CODE/APP渠道号(默认为0)/应用市场版本号/应用市场版本名

代码中的openid

数据格式是:GUID/OUID/DUID/AndroidId

然后经过URLencode处理

通过请求测试,签名sign、sg、oak是服务器作为校验的依据,所以需要对上面三个参数做分析。


①:参数”oak“来源的分析

java层获取该参数的代码块是:

函数跳转到native层,so文件名称:libocstool.so。

上述JNI函数通过静态注册,查看b函数:

发现key1通过a函数初始化得出,在请求之前进行初始化,并校验APP的签名。

如果APP签名校验不通过,则key得不到初始化,应用内所有的请求都会返回错误。


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

最后于 2023-12-13 18:04 被Aimees编辑 ,原因:
收藏
免费 8
支持
分享
最新回复 (9)
雪    币: 222
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
2
厉害
2024-3-18 16:52
0
雪    币: 76
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
3
学习了
2024-3-21 18:21
0
雪    币: 2
活跃值: (1823)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
感谢分享
2024-3-21 21:05
0
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
5
感谢,有apk链接吗
2024-3-26 13:49
0
雪    币: 823
活跃值: (1128)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
6
夜夜夜夜夜 感谢,有apk链接吗
https://www.oppomobile.com/  包名com.heytap.market
2024-3-26 14:00
0
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
7
Aimees https://www.oppomobile.com/ 包名com.heytap.market
感谢大佬
2024-3-26 14:57
0
雪    币: 214
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
8
感谢大佬,能私发一份Python吗 ,ihetiancong#gmail.com
2024-3-28 09:27
0
雪    币: 61
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
9
大佬为什么我的ida在分析key2进入c函数的时候没有findclass那样的函数呀,全是偏移量获取地址那种调用
2024-4-18 20:00
0
雪    币: 823
活跃值: (1128)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
10
选中函数的第一个参数,按键盘【y】 ,把第一个参数的类型改成JNIEnv *
2024-4-19 09:52
1
游客
登录 | 注册 方可回帖
返回
//