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和端口

阅读更多
文章标签: android UID
个人分类: android
上一篇使用RecyclerView实现抽奖
下一篇Android通过命令netstat查看应用访问过的IP和端口
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭