当前位置: 首页 > article >正文

Android framework 编程之 - Binder调用方UID

注:不要弄混 uid 和 userID 的区别。

1. 获取Binder 调用方UID

	Binder.getCallingUid

    /**
     * Return the Linux UID assigned to the process that sent you the
     * current transaction that is being processed. This UID can be used with
     * higher-level system services to determine its identity and check
     * permissions. If the current thread is not currently executing an
     * incoming transaction, then its own UID is returned.
     */
    @CriticalNative
    @android.ravenwood.annotation.RavenwoodReplace
    public static final native int getCallingUid();

2. 判断UID 是否是特殊UID

例如判断是否是System UID

uid == Process.SYSTEM_UID

特殊 UID 的列表
这里仅仅列出一部分
frameworks/base/core/java/android/os/Process.java

    /**
     * An invalid UID value.
     */
    public static final int INVALID_UID = -1;

    /**
     * Defines the root UID.
     */
    public static final int ROOT_UID = 0;

    /**
     * Defines the UID/GID under which system code runs.
     */
    public static final int SYSTEM_UID = 1000;

    /**
     * Defines the UID/GID under which the telephony code runs.
     */
    public static final int PHONE_UID = 1001;

    /**
     * Defines the UID/GID for the user shell.
     */
    public static final int SHELL_UID = 2000;

将 Binder 调用方 UID 变为本地 UID ,豁免部分权限检查

	// 将调用标识变为本地进程,相对于System Server 就是 system server 进程
	final long token = Binder.clearCallingIdentity();
	try {
		// 权限检查的是本地进程。
	} finally {
		// 将调用标识变为非本地标识
		Binder.restoreCallingIdentity(token);
	}

http://www.kler.cn/a/291466.html

相关文章:

  • 【c++丨STL】list的使用
  • Web3浪潮下的区块链应用:从理论到实践的全面解析
  • 网络传输:网卡、IP、网关、子网掩码、MAC、ARP、路由器、NAT、交换机
  • C指针之舞——指针探秘之旅
  • 极速入门数模电路
  • 如何对AWS进行节省
  • CSS基础 --- % 相对于谁
  • 斯坦福UE4 C++课学习补充21:击败动画
  • Snipaste:一款强大的截图与贴图工具
  • 汽车电子行业知识:什么是车辆定位技术
  • UNIX及UNIX-like环境下的调试工具gdb使用方法
  • 【排序算法】快速排序升级版--三路快排详解 + 实现(c语言)
  • ES之三:springboot集成ES
  • Django+Vue家居全屋定制系统的设计与实现
  • chapter09-OOP高级部分——(单例模式)——day12
  • 【图灵完备 Turing Complete】游戏经验攻略分享 Part.3 存储器
  • Spring Boot如何解决跨域问题?
  • 区块链开发解决方案有哪些
  • 高防IP的作用有哪些?
  • 羲和能源大数据平台——Python数据绘图方法
  • 前端XSS 攻击与SQL注入 处理
  • 本地电脑交叉编译ffmpeg 到 windows on arm64
  • 机器学习课程学习周报十
  • Qlik数据集成 | Qlik 连续 14 年稳居 2024 Gartner® ABI Magic Quadrant™ 领导者
  • --- 数据结构 链表 --- java
  • pytorch pyro更高阶的优化器会使用更高阶的导数,比如二阶导数(Hessian矩阵)