gpt4 book ai didi

Android Binder 清除调用者身份

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:16:10 26 4
gpt4 key购买 nike

最近看Android源码,发现在Binder IPC调用时,总是调用一对方法。我阅读了评论,但我无法清楚地知道根本原因。配对方法如下:

final long origId = Binder.clearCallingIdentity();

//other local method.

Binder.restoreCallingIdentity(origId);

有谁知道那对方法的作用是什么?好像跟权限有关。

最佳答案

虽然问题很老,但除了官方的方法描述外,还值得补充更多细节。


除了(或连同)IPC,AndroidBinder 框架的关键作用是安全性。

每个 Binder 事务都在调用进程(caller)的身份(PID 和 UID)下运行,以便被调用进程(callee ) 可以检查调用进程的权限并决定请求的方法是否可以执行。

如果这样的交易需要(临时)在被调用者的身份下运行,调用者的身份可以被清除并稍后通过调用Binder.clearCallingIdentity()恢复。和 Binder.restoreCallingIdentity(long)分别。在调用之间,将检查被调用者的权限。

作为示例,考虑系统服务(AOSP 位置:/frameworks/base/services/java/com/android/server)。运行在system_server进程,UID=1000,服务可以临时清除调用者的身份,以通过权限检查。

关于Android Binder 清除调用者身份,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16005935/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com