Bagaimana saya bisa menemukan nama aplikasi oleh UID?

39

Dalam "riwayat baterai" saya telah menemukan bahwa aplikasi dengan UID 10058 menggunakan banyak baterai.

Bagaimana saya bisa menemukan nama aplikasi dengan UID sama dengan 10058?

Azat
sumber

Jawaban:

32

Android memberikan UID (User ID) pada setiap aplikasi pada waktu pemasangan; tidak seperti PID (ID Proses) yang bersifat sementara dan terus berubah sepanjang waktu, UID tetap konstan selama aplikasi tidak diinstal ulang. UID harus unik untuk setiap aplikasi, kecuali ketika aplikasi secara eksplisit meminta untuk membagikan userid dengan aplikasi lain (ada batasan keamanan di sekitar ini, kedua aplikasi harus ditandatangani dengan kunci privat yang sama, yaitu berasal dari pengembang yang sama).

Aplikasi ini mengklaim menunjukkan UID aplikasi:

EDIT:

Coba lihat /data/system/packages.xml(Anda perlu root untuk melihat file ini), setiap aplikasi yang diinstal harus memiliki entri di sana. Katakanlah, saya sudah menginstal Adobe Reader di ponsel saya:

<package name="com.adobe.reader" codePath="/mnt/asec/com.adobe.reader-1/pkg.apk" flags="262144" ts="1300539048000" version="37149" userId="10034" installer="com.google.android.feedback">
<sigs count="1">
<cert index="21" key="... very long random string ..." />
</sigs>
<perms />
</package>

Ponsel saya telah ditugaskan userId="10034"untuk Adobe Reader.

Untuk aplikasi yang telah meminta untuk membagikan id pengguna dengan aplikasi lain, katakan Handcent:

<package name="com.handcent.nextsms" codePath="/system/app/HandcentSMS.apk" flags="1" ts="1217592000000" version="373" sharedUserId="10064">
<sigs count="1">
<cert index="17" key="... very long random string ..." />
</sigs>
</package>

maka atribut yang Anda cari adalah sharedUserId="10064"

Lie Ryan
sumber
26

Atur di PC, sambungkan perangkat ke PC, luncurkan shell di PC dan masukkan:

adb shell "dumpsys package | grep -A1 'userId=UID'"

Ganti UIDdengan ID yang Anda cari, seperti 10102.

Contoh:

bash-4.2 # adb shell "paket dumpsys | grep -A1 'userId = 10102'"
   userId = 10102
   pkg = Paket {46171ce com.android.chrome }
bash-4.2 #

Baris yang berisi Package{akan menampilkan nama paket aplikasi di antara spasi dan }. Anda dapat melakukan adb shell dumpsys package PKG_NAME( PKG_NAME→ nama paket suatu aplikasi) untuk mengetahui rincian lebih lanjut tentang paket / aplikasi itu.


Jika Android di-root, dari adb shell atau aplikasi terminal emulator, Anda dapat melakukan:

su
cat /data/system/packages.list | grep UID

Dalam output, apa pun sebelum UID adalah nama paket.

Contoh:

shell @ shamu: / $ su
root @ shamu: / # cat /data/system/packages.list | grep 10102
com.android.chrome 10102 0 / data / data / com.android.chrome default 3002,3003,3001
root @ shamu: / #

Atau, jika Anda telah menginstal Busybox atau Toybox dan tersedia di bawah variabel PATH, dari emulator terminal atau adb shell lakukan:

su
find / data / data / -type d -group UID -maxdepth 1 | nama dasar xargs

Contoh:

shell @ shamu: / $ su
root @ shamu: / # find / data / data / -group 10102 -type d -maxdepth 1 | nama dasar xargs
com.android.chrome
root @ shamu: / #

Karena kami tertarik pada label aplikasi dan bukan nama paket, lanjutkan dengan jawaban dari GAT ditarik atau dari Izzy .

Firelord
sumber
Gunakan find /data/data/ -user UID -type d -maxdepth 1 | xargs basenamejika Anda mendapatkan beberapa hasil dalam findperintah pertama .
Firelord
Ini bekerja untuk saya tanpa root.
Anubian Noob
5

Instal emulator terminal , luncurkan dan jalankan:

ps | grep 10058

psdaftar proses dan grepfilter untuk ID yang Anda inginkan.

Tapi ini hanya berfungsi jika aplikasi sedang berjalan saat Anda menjalankan perintah.

Snark
sumber
Saya mencoba ini, tetapi tidak berhasil, karena aplikasi tersebut belum berjalan
azat
6
Ini untuk PID, si penanya mengacu pada UID
Lie Ryan
2
UID ditampilkan dalam output ps serta PID. Keluaran ps biasanya memiliki garis-garis seperti '12345 app_118 ...' di mana 12345 adalah PID dan app_118 adalah UID (sesuai dengan userId = 10118 di /data/system/packages.xml)
Seni Swri
5

Dalam shell ADB (atau terminal emulator) gunakan perintah berikut:

cat /proc/<your_process_id_here>/status

dan lihat di bidang "Nama". Ini harus menjadi nama proses. Jadi dalam kasus Anda itu akan menjadi " cat / proc / 10058 / status "

Chahk
sumber
3
10058 seharusnya menjadi PID di sini sementara OP memberi kami UID.
Firelord
0

Saya memiliki masalah serupa dengan Android 6.0, Moto G 2nd Gen dari 2014. Saya kebetulan telah meningkatkan aplikasi ES File Explorer dan saya perhatikan itu membengkak sekali dan menyedot banyak baterai. Saya menghapus aplikasi dari sistem, tetapi aplikasi membiarkan proses zombie mengambil CPU. UID serupa dengan milik Anda 10118, dan terdaftar dalam statistik baterai sebagai proses sumber daya yang paling lapar.

Kemudian saya menginstal aplikasi bernama "OS Monitor" dan memperhatikan bahwa file .esfm sebenarnya adalah satu-satunya proses yang menggunakan 60% CPU. Saya segera tahu bahwa itu ada hubungannya dengan ES File Explorer, tapi tunggu ... Saya HARUS menghapus ES File Explorer. Iya nih. Satu-satunya hal yang tidak saya lakukan adalah MEMULAI kembali smartphone. Percayalah, saya berpikir tentang hal-hal gila, seperti menjadi root dan mengalahkan omong kosong dari proses itu, melemparkan telepon ke dinding, dan bahkan mulai percaya bahwa baterai saya mencapai akhir hidup. Yang mengejutkan saya, saya cukup me-restart telepon dan proses itu hilang.

Jadi sebelum mengambil tindakan drastis apa pun, cobalah mencari tahu aplikasi mana yang memberi Anda waktu yang buruk, hapus instalannya lalu restart telepon. Periksa OS. Monitor daftar penggunaan CPU, dan Anda harus baik-baik saja.

dbarros
sumber
0

Untuk menemukan "segalanya" oleh UID (atau GroupID) di ponsel yang di- root , termasuk proses yang berjalan, aplikasi sistem, dan sensor perangkat keras:

# ID=3011; find / -group $ID -o -user $ID   2>/dev/null

Contoh 1:

# ID=3011; find / -group $ID -o -user $ID   2>/dev/null
/proc/208
/proc/208/task
/proc/208/task/208
/proc/208/task/208/attr
[...]

# ls -la /proc/208/exe
lrwxrwxrwx 1 root root 0 2017-04-04 22:14 /proc/208/exe -> /system/bin/sensors.qcom

Contoh 2

# ID=10009; find / -group $ID -o -user $ID   2>/dev/null
/data/misc/profiles/cur/0/com.android.cellbroadcastreceiver
/data/misc/profiles/cur/0/com.android.cellbroadcastreceiver/primary.prof
/data/data/com.android.cellbroadcastreceiver
/data/data/com.android.cellbroadcastreceiver/cache
/data/data/com.android.cellbroadcastreceiver/code_cache
/data/user_de/0/com.android.cellbroadcastreceiver
/data/user_de/0/com.android.cellbroadcastreceiver/cache
/data/user_de/0/com.android.cellbroadcastreceiver/code_cache
/data/user_de/0/com.android.cellbroadcastreceiver/code_cache/com.android.opengl.shaders_cache
/data/user_de/0/com.android.cellbroadcastreceiver/shared_prefs
/data/user_de/0/com.android.cellbroadcastreceiver/shared_prefs/com.android.cellbroadcastreceiver_preferences.xml
/data/user_de/0/com.android.cellbroadcastreceiver/shared_prefs/_has_set_default_values.xml
/data/user_de/0/com.android.cellbroadcastreceiver/databases
/data/user_de/0/com.android.cellbroadcastreceiver/databases/cell_broadcasts.db
/data/user_de/0/com.android.cellbroadcastreceiver/databases/cell_broadcasts.db-journal
Alec Istomin
sumber