首页
社区
课程
招聘
[原创]AndProxy 升级版:基于 Seccomp 的无 Hook Binder 服务代理
发表于: 2026-5-4 15:53 24561

[原创]AndProxy 升级版:基于 Seccomp 的无 Hook Binder 服务代理

2026-5-4 15:53
24561
收藏
免费 108
打赏
分享
最新回复 (68)
雪    币: 1776
活跃值: (3762)
能力值: ( LV4,RANK:55 )
在线值:
发帖
回帖
粉丝
26
1
2026-5-6 15:22
0
雪    币: 158
活跃值: (4896)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
27
谢谢分享 
2026-5-6 16:49
0
雪    币: 11252
活跃值: (4330)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
28
666
2026-5-6 17:14
0
雪    币: 375
活跃值: (3952)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
29
学习一下
2026-5-6 19:26
0
雪    币: 378
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
30
666
2026-5-7 11:10
0
雪    币: 553
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
31
6666
2026-5-7 11:16
0
雪    币: 931
活跃值: (834)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
32
谢谢分享
2026-5-7 14:20
0
雪    币: 2054
活跃值: (2467)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
33
学习新思路
2026-5-7 14:23
0
雪    币: 104
活跃值: (8742)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
34
TQL
2026-5-8 10:53
0
雪    币: 2868
活跃值: (5512)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
35
666
2026-5-9 11:07
0
雪    币: 1
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
36
通知内核继续执行
2026-5-9 12:12
0
雪    币: 686
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
37
666
2026-5-11 14:14
0
雪    币: 0
活跃值: (465)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
38
6666
2026-5-12 09:39
0
雪    币: 71
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
39
感谢分享
2026-5-12 14:12
0
雪    币: 758
活跃值: (1595)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
40
learn
2026-5-13 04:21
0
雪    币: 217
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
41
谢谢分享
2026-5-13 10:34
0
雪    币: 304
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
42
相关代码能分享下么?
2026-5-14 14:50
0
雪    币: 6170
活跃值: (2693)
能力值: ( LV4,RANK:156 )
在线值:
发帖
回帖
粉丝
43

有几个实现细节想跟楼主交流确认一下,主要是“透明”和“转发”这块。

1. 文章里说的是透明代理,但我理解这里可能有两种完全不同的透明:
第一种是“对调用方App透明”。比如只针对某个App的某个Binder code,把 target.handle改到自己的代理服务,然后代理服务直接mock一个返回值,比如你说的签名校验直接返回通过。
这个场景我理解是成立的,因为App侧只看到这次 Binder调用返回了它期望的Parcel,确实没有标准办法知道到底是谁处理了这个transaction。

第二种是“对原始系统服务也透明”,链路就变成:
调用方 -> 代理服务 -> 原始系统服务 -> 代理服务 -> 调用方

这里我有个疑问:原始系统服务看到的caller不就变成代理服务了吗?比如getCallingUid/getCallingPid,应该都会变。如果没做处理,我理解就不能叫完整透明,只能说对调用方透明。

这里就明显跟你说的“不重新实现Binder协议栈,也不重新实现Parcel编解码”不一致了,如果代理服务要做转发、修改请求或修改返回,业务层还是要正确处理这些东西的,这个边界文章里感觉没说清楚。

2.基于上面这个问题,关于你的实现中,如果目标是system_server / PackageManagerService / 厂商自己的服务发起Binder请求,如果内部会检查 getCallingUid,这种怎么处理?
还是说这个方案的主要目标其实是App侧特定code的结果替换,比如签名校验、包信息查询这类,并不打算做通用透明转发?

PS:另外handle这块我理解应该是在目标进程内初始化时分别拿originalHandle和proxyHandle,因为Binder handle是进程独立的,如果不是目标进程内拿handle,就需要内核直接操作binder_ref,难度会高很多

最后于 2026-5-15 17:06 被月落之汀编辑 ,原因: 语义不顺
2026-5-15 17:03
0
雪    币: 1748
活跃值: (395)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
44
月落之汀 有几个实现细节想跟楼主交流确认一下,主要是“透明”和“转发”这块。1. 文章里说的是透明代理,但我理解这里可能有两种完全不同的透明:第一种是“对调用方App透明”。比如只针对某个Ap ...
请问你问的是ebpf方案还是seccomp方案?
2026-5-15 17:48
0
雪    币: 6170
活跃值: (2693)
能力值: ( LV4,RANK:156 )
在线值:
发帖
回帖
粉丝
45
孤木落 请问你问的是ebpf方案还是seccomp方案?
我理解我应该问的是ebpf的方案,如果方便交流的话,还请解惑,谢谢
2026-5-15 18:01
0
雪    币: 1748
活跃值: (395)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
46
月落之汀 我理解我应该问的是ebpf的方案,如果方便交流的话,还请解惑,谢谢
对不起,对于ebpf方案,我目前只是根据seccomp发散了一个思路,完善的代理技术还没有研究,也没有没有充分测试过,只跑过一个修改包信息查询的demo(gpt写的)。seccomp方案中这两个问题比较容易解决,也是我当前研究多开框架时主要使用的,暂时没有精力完善ebpf方案。
2026-5-15 18:20
0
雪    币: 304
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
47
用这个实现  定位修改可以么?
2026-5-16 22:40
0
雪    币: 158
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
48
看看
2026-5-19 13:11
0
雪    币: 200
活跃值: (436)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
49
666
2026-5-19 15:42
0
雪    币: 1890
活跃值: (2750)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
50
牛逼6666
2026-5-19 16:24
0
游客
登录 | 注册 方可回帖
返回