首页 > 解决方案 > Android binder - 将 binder 调用限制为一个进程

问题描述

我有一个通过 binder (AIDL) 与本机进程交互的 Android Java 服务。

我看到该服务列在“adb shell 服务列表”下。我也可以使用“adb shell service start 1 xxx”向该服务发送命令。

为了解决这个问题,我希望仅在这个特定的 Java 服务和本机进程之间进行绑定 IPC 事务。

我在任何地方都找不到任何确凿的信息。非常感谢这方面的任何帮助。

标签: androidandroid-binder

解决方案


可以使用 SELinux 控制绑定器接口的访问。

根据您是在使用binder还是在 a或文件vdbinder中定义服务上下文,如下所示:service_contextsvndservice_contexts

myservice      u:object_r:myservice_[vnd]service:s0

注意myservice是您提供的名称defaultServiceManager()->addService()

myservice现在您可以在.te策略文件中明确定义允许访问的进程。

示例:允许myclient访问myservice

allow myclient myservice_[vnd]service:service_manager find
[vnd]binder_use(myclient)
binder_call(myclient, myservice_[vnd]service)

您可以在此处找到更多信息。


推荐阅读