android - Android binder - 将 binder 调用限制为一个进程
问题描述
我有一个通过 binder (AIDL) 与本机进程交互的 Android Java 服务。
我看到该服务列在“adb shell 服务列表”下。我也可以使用“adb shell service start 1 xxx”向该服务发送命令。
为了解决这个问题,我希望仅在这个特定的 Java 服务和本机进程之间进行绑定 IPC 事务。
我在任何地方都找不到任何确凿的信息。非常感谢这方面的任何帮助。
解决方案
可以使用 SELinux 控制绑定器接口的访问。
根据您是在使用binder
还是在 a或文件vdbinder
中定义服务上下文,如下所示:service_contexts
vndservice_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)
您可以在此处找到更多信息。
推荐阅读
- excel - 获取由另一列中的值分区的列中的唯一值,并将其扔到以逗号分隔的另一列
- javascript - 使用 PATH 元素在 SVG 中绘制双曲线
- mql4 - EA 在 MQL4 中打开比预期更多的订单
- julia - 在 Julia 中将 NamedTuple 数组转换为数组
- flutter - 使颤振小部件居中的问题
- javascript - 如何在 div 类中获取此 document.body.appendChild 图像?
- pdf - 当我尝试将 Rmarkdown 作为 PDF 运行时,此错误会记录我
- eclipse - 通过命令行安装 eclipse 插件 [Windows]
- material-ui - 如何在 css 而不是 html 中使用 Material UI 图标?
- php - 用户正则表达式匹配文件名并将其分成几部分