【问题标题】:Is there any way to get UID or PID of an IBinder instance?有什么方法可以获取 IBinder 实例的 UID 或 PID 吗?
【发布时间】:2016-12-05 11:02:49
【问题描述】:

我需要对通过IPC从其他进程携带的IBinder 实例进行安全检查。这个IBinder的创建者/接收者可能不是携带它的IPC的直接调用者,所以我不能简单地使用Binder.getCallingUid()

如何检测特定IBinder 实例的UIDPID

【问题讨论】:

  • 您想从哪里获取呼叫者的 UID 或 PID?请注意,您正在获取活动 Binder 事务的调用者的 UID 或 PID(因此必须在 onTransact 方法中完成)
  • @pskink IBinder 实例不一定归调用者所有。它可能通过早期的 IPC 从另一个进程进行。
  • 你想从哪里获取 pid 或 uid?
  • @pskink 我的活动或服务中的代码。
  • 好的,你在哪里创建你的Binder?你的BinderonTransact 方法,它是你应该调用getCallingPid / getCallingUid, 然后你可以将你的Binder 传递给一些不同的进程A,进程A 可以调用transact方法或将Binder 传递给处理BBinderpassing 可以多次执行,但最后为了使用Binder,必须使用transact 方法,并且在调用onTransact 方法时将在可以获取调用者的 pid / uid 的地方执行

标签: android ipc android-binder


【解决方案1】:

我认为你必须在 IPCtreadState 中插入一个钩子来提供 uid 并从 copy_to_user 函数发送它!

【讨论】:

    猜你喜欢
    • 2016-11-16
    • 2013-03-26
    • 1970-01-01
    • 2013-03-05
    • 1970-01-01
    • 1970-01-01
    • 2019-12-23
    • 2013-05-29
    • 2015-10-07
    相关资源
    最近更新 更多