首页 > 编程知识 正文

android 查看UID,android查看app安装目录

时间:2023-05-06 15:57:41 阅读:218366 作者:4756

安卓查看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了。

通过程序获得所有已安装应用的UIDList<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和端口

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。