【发布时间】:2016-12-05 11:02:49
【问题描述】:
我需要对通过IPC从其他进程携带的IBinder 实例进行安全检查。这个IBinder的创建者/接收者可能不是携带它的IPC的直接调用者,所以我不能简单地使用Binder.getCallingUid()。
如何检测特定IBinder 实例的UID 或PID?
【问题讨论】:
-
您想从哪里获取呼叫者的 UID 或 PID?请注意,您正在获取活动 Binder 事务的调用者的 UID 或 PID(因此必须在
onTransact方法中完成) -
@pskink IBinder 实例不一定归调用者所有。它可能通过早期的 IPC 从另一个进程进行。
-
你想从哪里获取 pid 或 uid?
-
@pskink 我的活动或服务中的代码。
-
好的,你在哪里创建你的
Binder?你的Binder有onTransact方法,它是你应该调用getCallingPid/getCallingUid,然后你可以将你的Binder传递给一些不同的进程A,进程A可以调用transact方法或将Binder传递给处理B,Binderpassing 可以多次执行,但最后为了使用Binder,必须使用transact方法,并且在调用onTransact方法时将在可以获取调用者的 pid / uid 的地方执行
标签: android ipc android-binder