首页
社区
课程
招聘
[原创]某短视频mssdk之get_token协议分析
发表于: 2025-5-28 16:01 2207

[原创]某短视频mssdk之get_token协议分析

2025-5-28 16:01
2207

抓包解密后协议数据:0a9d050a08216e6f747365742112065869616f6d691a044d4920362208216e6f74736574212a07416e64726f6964320231313a09313038302a3139323040c0074a1c525133412e3231313030312e3030312072656c656173652d6b65797350b0f187ee0c5a03656e5f6216416d65726963612f4c6f735f416e67656c65732c2d38685c708001788080968e1d80018080b8fa9b0388018080b8fa9b0390018080c092d9019a0108216e6f7473657421a20108216e6f7473657421aa011039643038313731303863316539373666b20108216e6f7473657421ba0108216e6f7473657421c2012c587365734548534b71726b716573596b33353354586f306941684a59436749722f43734e69396354546b593dc80184f187ee0cd2012433376239616562612d613234322d343738392d623137302d656339646163383531343966d80180c0aa95e516e20108216e6f7473657421e801fd887af001fd887afa0108216e6f747365742182020e3137322e31392e3135342e3136378a020e3137322e31392e3135342e323534920208216e6f74736574219a0208216e6f7473657421a002ec04a8026ab20208216e6f7473657421ba0208216e6f7473657421c202165b2231302e382e382e38222c22302e302e302e30225dc802fd887ad002fd887ad80202e20208216e6f7473657421e802b4f587ee0cf002e6d4d855fa025f2f646174612f6170702f7e7e4b365a664a48727a6f3439344f66666b654a583449513d3d2f636f6d2e7a68696c69616f6170702e6d75736963616c6c792d343035426138732d646c46387442305777336d4c32673d3d2f626173652e61706b80033c8803fd887a920308216e6f74736574219803fd887aa003fd887aaa0308216e6f7473657421b20308216e6f7473657421ba0308216e6f7473657421c003fd887a1219415665734e4274323148453769504e574673314f313673374e1a07616e64726f6964221d7630352e30302e30352d616c7068612e31302d6f762d616e64726f696428c09480503204313233333a0633332e322e354213373431323534333039393438303635353336354a103030303030303030303030303030303058fd887a7a08216e6f74736574218001fd887a

反序列化:


解密后返回值:

0a19417a78564c494949376a696e67725a6b56456b4e2d6e384762109003

反序列化:



get_token协议上报的数据主要是一些设备信息和设备id,以及sdk信息。

其中 内层字段 21明显是 android_id,外层字段8是业务设备id,device_register协议返回。

内层字段26测试发现是 boot_id

内层字段24卸载重装不变,并且换设备后不一样,需要进一步分析:

使用frida hook 0xdea6c(base64_encode),打印出调用栈,定位到地址:

发现数据的来源是 地址 0F7898 处函数调用的返回值,并且跟进分析,发现该函数只是将 java的数组转换成c++的数据。

再往上就是 0xF7878 处的函数调用,跟进分析,发现该函数主要是调用java的方法。

frida hook 输出方法名:


输出:

原来获取的是 MediaDrmId


1、抓包http 协议数据,反序列化:

第 6 个字段内容才是实际的加密数据

hook memcpy函数,当长度一样时,打印出调用栈,得到关键加密函数:

关键加密函数位于 0x11101c,传入序列化后的协议,返回加密后的数据:

这是一个vm函数,opcode位于 0x161DF0,反汇编虚拟指令:

上述主要两步:


1、0x270处调用  0xe1e60 压缩数据

2、0x308处调用  0x1110e4 加密数据


第一步的压缩是zlib压缩,主要看数据的加密流程。


0x1110e4 函数中,在地址 0x1126e4 是一个aes加密操作,待加密的数据指针保存在 [SP,#0x88]中,是一个string对象

从前面找到AES加密的数据来源:

这里通过string的构造函数,新建了一个待加密的string对象,并把地址保存到 [SP,#0x88],数据来源是 [SP,#0xA0], 数据长度是 [SP,#0xAC]

继续向前找 [SP,#0xA0] 处数据变动的地方:

这里调用 0x113854 做数据加密,然后调用 0x1375ac ,在加密后的数据前面多加一个字节内容,最后对一个字节做运算后覆盖

前面一个字节的计算方式:


first_byte = data[0]

a = 3 | first_byte

b = 3 & first_byte

data = ((a - b) & 0xff) + data


核心加密函数位于 0x113854:

参数2决定是加密还是解密, w1 = 1 时,执行加密操作,关键基本块位于  loc_113934, 以8字节位单位执行加密操作。关键加密函数是  0x1140DC。

这是一个自定义的 xx_tea算法,关键加密部分如下:

还原算法:

其中循环长度的计算方式:

还原出 0x113854 的加密算法:

通过frida调试发现, 0x113854 的加密数据,比压缩后的数据,前面多了不固定长度字节内容,可能是 1 -  4 个字节。需要继续跟踪其数据来源


1、第一个字节来源:

2、后面 1 - 3 字节来源:


实际取的长度计算方式:


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

最后于 2025-5-28 16:57 被CCTV果冻爽编辑 ,原因:
收藏
免费 118
支持
分享
最新回复 (82)
雪    币: 3223
活跃值: (1133)
能力值: ( LV10,RANK:160 )
在线值:
发帖
回帖
粉丝
2
占个头排,希望可以给个精华
2025-5-28 16:05
0
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
3
大佬,牛逼
2025-5-28 17:27
0
雪    币: 729
活跃值: (5843)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
4
1
2025-5-28 18:19
0
雪    币: 1837
活跃值: (3680)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
666
2025-5-28 23:48
0
雪    币: 110
活跃值: (949)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
77777777777777777777
2025-5-29 01:14
0
雪    币: 104
活跃值: (5701)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
999
2025-5-29 10:34
0
雪    币: 263
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
8
666
2025-5-29 11:51
0
雪    币: 4088
活跃值: (3465)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
感谢大佬分享
2025-5-29 13:04
0
雪    币: 27
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
10
1
2025-5-29 13:17
0
雪    币: 59
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
11
1
2025-5-29 15:36
0
雪    币: 2148
活跃值: (2012)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
1
2025-5-29 17:27
0
雪    币: 0
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
13
1
2025-5-29 17:46
0
雪    币: 4
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
14
感谢大佬分享
2025-5-29 20:20
0
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
15
123
2025-5-30 03:39
0
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
16
report有看过吗
2025-5-30 03:43
0
雪    币: 30
活跃值: (1735)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
666
2025-5-30 08:30
0
雪    币: 223
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
18
感谢大佬
2025-5-30 09:56
0
雪    币: 5164
活跃值: (4755)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
666
2025-5-30 10:10
0
雪    币: 3223
活跃值: (1133)
能力值: ( LV10,RANK:160 )
在线值:
发帖
回帖
粉丝
20
mb_uwpxtoew report有看过吗
report协议太长了没法图片粘贴出来,主要就是加了很多设备和系统信息、网络、代理等信息
2025-5-30 10:28
0
雪    币: 0
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
21
大佬大佬!
2025-5-30 10:32
0
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
22
1
2025-5-30 10:54
0
雪    币: 90
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
23
6666666
2025-5-30 11:22
0
雪    币: 2352
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
24
大佬牛,学习了~
2025-5-30 13:33
0
雪    币: 141
活跃值: (1200)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
25
太强了
2025-5-30 13:38
0
游客
登录 | 注册 方可回帖
返回