首页
社区
课程
招聘
[原创]移动安全联盟(libmsaoaidsec.so) 绕过知识
发表于: 2025-9-15 06:37 4325

[原创]移动安全联盟(libmsaoaidsec.so) 绕过知识

2025-9-15 06:37
4325

在一款游戏的动态调试过程中,由于游戏版本更新,我在使用 Frida 进行 Java 层 Hook 时遇到了崩溃问题。经过多次复现,发现崩溃发生在执行 Java.perform() 函数约一秒之后。


该游戏除了集成常见的腾讯反作弊模块(如 libtprt.so 和 libtersafe2.so)之外,此次更新还新增了两个与移动安全联盟(MSA)相关的动态库:libmsaoaidsec.so 和 libmsaoaidauth.so。前两个模块属于腾讯反作弊系统,已有相对成熟的绕过方法;而新增的两个 so 文件则与 MSA 提供的 OAID(开放匿名设备标识)相关,其初始化逻辑位于 com.bun.miitmdid 包下的 Dex 代码中。


根据之前的研究经验,部分游戏并未获得 MSA 官方授权,因此直接通过 dlopen 方式动态加载了这些 so 文件(具体实现位于 init_array 段)。常见的绕过方式包括直接删除 so 文件,或通过挂起线程创建等方式阻止其执行。然而,在这款游戏中,由于确实获得了 MSA 授权,直接删除 so 文件会导致在初始化设备信息时出现崩溃,提示无法找到对应的 Native 注册方法,因此传统方法并不适用。


进一步查阅相关技术论坛发现,有其他开发者反馈在 Hook Java 方法时也遇到了类似问题。分析指出,Frida Java Bridge 在 Java.perform() 中会通过 Hook libart.so 中的关键函数实现注入,而 libmsaoaidsec.so 则会对这些函数的起始指令进行校验,检测是否存在 Hook 痕迹(如跳转指令等)。


[培训]传播安全知识、拓宽行业人脉——看雪讲师团队等你加入!

最后于 2025-9-15 17:50 被Metzkerson编辑 ,原因: 由于写的时候不严谨libmsaoaidsec.so 写成了libmsaoaidauth.so
收藏
免费 313
支持
分享
最新回复 (199)
雪    币: 230
活跃值: (1067)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
学到了,牛逼牛逼
2025-9-15 14:28
0
雪    币: 0
活跃值: (170)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
1
2025-9-15 19:14
0
雪    币: 5881
活跃值: (5605)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
66
2025-9-15 19:52
0
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
5
新方法
2025-9-15 20:27
0
雪    币: 10
活跃值: (1678)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
6
2025-9-15 20:39
0
雪    币: 0
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
7
11
2025-9-15 20:56
0
雪    币: 0
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
8
666
2025-9-15 21:40
0
雪    币: 7066
活跃值: (23500)
能力值: ( LV12,RANK:550 )
在线值:
发帖
回帖
粉丝
9
看看
2025-9-15 22:28
0
雪    币: 19
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
10
mark
2025-9-16 09:07
0
雪    币: 183
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
11
学习学习
2025-9-16 09:26
0
雪    币: 0
活跃值: (2346)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
学习学习
2025-9-16 09:29
0
雪    币: 1487
活跃值: (3478)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
13
嘻嘻嘻嘻嘻
2025-9-16 09:33
0
雪    币: 3
活跃值: (772)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
学习学习
2025-9-16 10:04
0
雪    币: 25
活跃值: (245)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
学习学习
2025-9-16 10:47
0
雪    币: 25
活跃值: (245)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
只要输入Java.perform()就会把frida的so动态注入进去,我先以为有动态注入检测,后来打包大型 frida-java-bridge 库,入口把 Java 对象暴露到全局就好了
2025-9-16 10:54
0
雪    币: 23
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
17
1
2025-9-16 11:57
0
雪    币: 2184
活跃值: (1060)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
6
2025-9-16 12:08
0
雪    币: 2103
活跃值: (3707)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
学习学习
2025-9-16 12:24
0
雪    币: 3549
活跃值: (3700)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
6
2025-9-16 12:34
0
雪    币: 740
活跃值: (2252)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
21
新方法
2025-9-16 12:36
0
雪    币: 390
活跃值: (1118)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
22
66
2025-9-16 13:40
0
雪    币: 209
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
23
666
2025-9-16 13:57
0
雪    币: 204
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
24
666
2025-9-16 15:02
0
雪    币: 204
活跃值: (120)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
25
学习
2025-9-16 15:45
1
游客
登录 | 注册 方可回帖
返回