首页
社区
课程
招聘
[原创]抖音抓包LSPosed插件多版本可用的技术刨析
发表于: 2026-6-29 00:40 5265

[原创]抖音抓包LSPosed插件多版本可用的技术刨析

2026-6-29 00:40
5265

如果只需要插件,不想看技术实现,可以关注公众号,发送“抖音插件”,获取编译好的插件
图片描述

libsscronet.so 会引用 BoringSSL 的 SSL API,比如 SSL_CTX_set_custom_verifySSL_do_handshake;真实实现位于 libttboringssl.so。所以这里 hook 的不是 Cronet 的导入符号,而是 BoringSSL 里的 custom_verify setter。

直接 hook Cronet 的 CertVerify 语义上最直观,但稳定性不如 BoringSSL setter。

Cronet 的证书校验不只是一个 bool。它还会填充证书链、host、OCSP、SCT、verify flags、SSLInfo 等状态。高层粗暴截断,很容易让后续逻辑拿到不完整状态。

custom_verify setter 更干净:

图片描述

图片描述

这两个函数的特点很适合 hook:

核心 detour:

BoringSSL 的 verify callback 有 per-CTX 和 per-SSL 两种注册粒度。抖音 Cronet 的主流量都通过 SSL_CTX_set_custom_verify 在 CTX 级注册,所以只 hook 这一个 setter 就能覆盖。

不要丢掉原始 callback。原 callback 后面还要被调用,用来维持 Cronet / BoringSSL 内部状态。

不能只用一个全局变量保存“最后一次看到的 callback”。

同一个进程里可能有多套 TLS 使用者:

它们各自创建自己的 SSL_CTX,注册各自的 verify callback。如果只保存一个全局 callback,后注册的组件会覆盖前面的组件。结果就是:

所以要按 CTX 对象保存:

但握手时 BoringSSL 交给回调的是 SSL*,不是 SSL_CTX*。要回到这张表,还得先从 SSL* 反查出它的 SSL_CTX*——这就是下一节的事。

主流量通常走 SSL_CTX_set_custom_verify。注册时我们保存的是 ctx -> callback,但握手时 MyVerifyCb 收到的是 SSL* ssl,所以需要从 ssl 反查 ctx

SSL_get_SSL_CTX 很短:

图片描述

代码里直接按偏移读取:

然后用这个 ctxg_ctx_cb 里找原始 callback,这个值目前看到抖音39.1.0-39.3.0目前最新版本没变化,其余版本我就不一一测试了,需要自行测试。

MyVerifyCb 做三件事:

核心逻辑:

查找路径只有一条:ssl -> ctx(按 §4 的偏移)-> g_ctx_cb。如果没找到(orig == nullptr),通常意味着 hook 晚于 CTX 创建,或偏移变了;这种情况应当打诊断暴露出来,而不是悄悄放行。

这一步的重点是先调原 callback。它会继续执行 Cronet 的证书校验逻辑,填充后续还会使用的状态。我们只是在它返回之后改最终结果。

custom verify callback 的返回值不是普通 bool:

同步失败可以覆盖:


[内核课程]《Windows内核攻防实战》!从零到实战,融合AI与Windows内核攻防全技术栈,打造具备自动化能力的内核开发高手。

收藏
免费 0
打赏
分享
最新回复 (102)
雪    币: 4345
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
2
666
2026-6-29 09:01
0
雪    币: 6417
活跃值: (11497)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
看看先666
2026-6-29 09:13
0
雪    币: 95
活跃值: (3317)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
66666666666
2026-6-29 09:35
0
雪    币: 18
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
5
666
2026-6-29 09:43
0
雪    币: 13
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
6
66666666666
2026-6-29 09:49
0
雪    币: 1036
活跃值: (1310)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
666
2026-6-29 09:53
0
雪    币: 161
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
8
感谢分享
2026-6-29 10:03
0
雪    币: 1082
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
9
666
2026-6-29 10:21
0
雪    币: 375
活跃值: (4042)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
10
学习一下
2026-6-29 10:28
0
雪    币: 0
活跃值: (280)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
133123223
2026-6-29 10:33
0
雪    币: 9172
活跃值: (7602)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
感谢分享
2026-6-29 10:35
0
雪    币: 6020
活跃值: (5496)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
感谢分享
2026-6-29 10:41
0
雪    币: 258
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
14
1
2026-6-29 11:06
0
雪    币: 2432
活跃值: (4466)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
15
666
2026-6-29 11:19
0
雪    币: 10
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
16
making
2026-6-29 11:33
0
雪    币: 4
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
17
6666
2026-6-29 12:03
0
雪    币: 0
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
18
6666
2026-6-29 12:17
0
雪    币: 9
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
19
66666666
2026-6-29 12:42
0
雪    币: 411
活跃值: (486)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
666666666666666
2026-6-29 13:28
0
雪    币: 1
活跃值: (593)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
6666
2026-6-29 14:26
0
雪    币: 112
活跃值: (9015)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
tql
2026-6-29 14:40
0
雪    币: 1674
活跃值: (1219)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
23
1
2026-6-29 14:52
0
雪    币: 0
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
24
1
2026-6-29 14:53
0
雪    币: 2
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
25
感谢分享
2026-6-29 14:58
1
游客
登录 | 注册 方可回帖
返回