android 查看UID

安卓查看UID

概述

    UID:一般理解为User Identifier,UID在linux中就是用户的ID,表明时哪个用户运行了这个程序,主要用于权限的管理。而在android中有所不同,Android中每个程序都有一个Uid 。默认情况下,机器人会给每个程序分配一个普通级别互不相同的UID,如果用互相调用,只能是UID相同才行,这就使得共享数据具有一定安全性,每个软件之间是不能随意获得数据的。

    Android的应用的UID是从10000开始,可以在Process.java中查看到(FIRST_APPLICATION_UID和LAST_APPLICATION_UID),由于UID是应用安装时确认的。我们可以从源码看到UID的产生(Settings.java)

private int newUserIdLPw(Object obj) {
    // Let's be stupidly inefficient for now...
    final int N = mUserIds.size();
    for (int i = 0; i < N; i++) {
        if (mUserIds.get(i) == null) {
            mUserIds.set(i, obj);
            return Process.FIRST_APPLICATION_UID + i;
        }
    }

    // None left?
    if (N > (Process.LAST_APPLICATION_UID-Process.FIRST_APPLICATION_UID)) {
        return -1;
    }

    mUserIds.add(obj);
    return Process.FIRST_APPLICATION_UID + N;
}

查看方式

  • 通过PS命令

    终端输入adb shell然后输入ps,可以查看到如下图进程列表。

    通过进程列表我们可以看到有多种类型的用户,其中u0_axxx代表着应用程序的用户。每个个应用程序的u0_axxx都是不一样的。从概述中我们知道应用程序的UID是从10000开始,u0_a后面的数字加上10000所得的值,既是UID了。

  • 通过程序获得所有已安装应用的UID
 
List<PackageInfo> packinfos = pManager.getInstalledPackages(PackageManager.GET_PERMISSIONS);
for(PackageInfo info : packinfos)
{
   Log.e(TAG,"app:"+info.applicationInfo.loadLabel(pManager).toString()+" uid:"+info.applicationInfo.uid);
}

  • 通过应用PID,查看对应应用的UID

    终端中输入adb shell,然后输入 cat /proc/<pid>/status。

  • 通过packages.xml,查看需要查询的应用的UID

    终端中输入adb shell,然后输入cat /data/system/packages.xml。


下一篇:android通过命令netstat查看应用访问过的ip和端口

  • 9
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值