You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android中获取binder_node句柄及注册问题求助(CVE-2023-20938)

针对CVE-2023-20938漏洞开发的Binder相关问题解答

1. Binder Node创建与Context Manager注册

  • 普通进程无法直接在内核Context Manager中创建binder_node,必须通过向系统service_manager(Context Manager实体)发送注册请求实现:
    • 用户态先通过defaultServiceManager()获取service_manager的Binder handle;
    • 实例化自定义Binder实体(比如native层BBinder子类、Java层AIDL生成的Stub实现类);
    • 调用service_manager的addService()方法传入服务名和Binder实体,内核会自动为该实体创建对应的binder_node,并将其关联到service_manager的服务列表中。
  • 注意:只有拥有系统签名或特定权限的进程,才能注册系统级服务;普通APP进程仅能注册私有服务。

2. 获取指定Binder Node的Handle

  • 进程内部创建的Binder Node:对应的用户态Binder对象(如IBinder实例)本身持有对应handle,可通过内部方法(如native层getHandle())直接获取。
  • 其他进程的Binder Node:通过service_manager的getService()方法,传入目标服务名即可拿到对应handle;未注册到service_manager的私有Binder Node,只能通过进程间传递Binder对象的方式获取(比如Intent传递Binder、其他进程主动发送)。

3. 关于ITokenManager

  • 这是Android系统内部的Binder服务,属于框架层令牌管理组件,负责处理权限验证、令牌生成/校验等系统内部事务,属于隐藏API,无对外公开文档。
  • 复现CVE-2023-20938时用到它,是因为该服务的交互逻辑能触发漏洞所需的Binder事务流程。要分析其接口和功能,可以:
    • 查找Android源码中的ITokenManager.aidl文件,查看方法定义;
    • 逆向system_server等系统服务进程中的对应实现代码;
    • 通过动态插桩或调试跟踪该服务的Binder调用流程。

内容的提问来源于stack exchange,提问作者Cyb3rCr0wCC

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.01 22:52:27