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

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

2023-11-13 15:53
8698

分析该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得不到初始化,应用内所有的请求都会返回错误。


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

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