Uygulama adını UID'ye göre nasıl bulabilirim?


38

"Batarya geçmişinde", UID 10058 olan uygulamanın çok fazla pil kullandığını buldum.

UID'li uygulamanın adını 10058'ye eşit nasıl bulabilirim?

Yanıtlar:


32

Android her uygulamaya yükleme sırasında bir UID (Kullanıcı Kimliği) atar; Geçici olan ve sürekli olarak değişen PID'den (İşlem Kimliği) farklı olarak, UID, uygulama yeniden yüklenmediği sürece sabit kalır. Kullanıcı kimliğini açıkça başka bir uygulamayla paylaşmayı talep ettiği durumlar dışında UID, her uygulamaya özel olmalıdır (bu konuda güvenlik kısıtlamaları vardır, iki uygulamanın aynı özel anahtarla imzalanması gerekir, yani aynı geliştiriciden gelir).

Bu uygulamalar, uygulamaların UID'sini gösterdiğini iddia ediyor:

DÜZENLE:

Bakmayı deneyin /data/system/packages.xml(bu dosyayı görüntülemek için kök koduna ihtiyacınız vardır), yüklü olan her uygulamanın bir girişi olmalıdır. Diyelim ki, telefonuma Adobe Reader yüklü.

<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>

Telefonum userId="10034"Adobe Reader'a atadı .

Kullanıcı kimliğini başka bir uygulamayla paylaşmak isteyen uygulamalar için 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>

o zaman aradığınız özellik sharedUserId="10064"


25

PC'de kurun , cihazı PC'ye bağlayın, PC'de bir kabuk açın ve şunu girin:

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

UID10102 gibi aradığınız ID ile değiştirin .

Örnek:

bash-4.2 # adb kabuğu "çöp kutusu paketi | grep -A1 'userId = 10102'"
   userId = 10102
   pkg = Paket {46171ce com.android.chrome }
bash-4.2 #

İçerdiği satır Package{, uygulamanın paket adını boşluklar ile boşluklar arasında gösterir }. Bu paket / uygulama hakkında daha fazla ayrıntı öğrenmek için adb shell dumpsys package PKG_NAME( PKG_NAME→ uygulamanın paket adı) yapabilirsiniz.


Android köklü ise, adb kabuğundan veya bir terminal emülatör uygulamasından, şunları yapabilirsiniz:

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

Çıktıda, UID'den önceki herhangi bir şey paket adıdır.

Örnek:

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

Alternatif olarak, PATH değişkeni altında yüklenmiş ve mevcut Busybox veya Toybox kullanıyorsanız , bir terminal emülatöründen veya adb kabuğundan yapın :

su
find / data / data / -tipi d-grubu UID-maxdepth 1 | xargs basename

Örnek:

shell @ shamu: / $ su
root @ shamu: / # find / data / data / -grup 10102 tipi d-maksdepth 1 | xargs basename
com.android.chrome
root @ shamu: / #

Paketin adı değil uygulamanın etiketiyle ilgilendiğimiz için, GAThrawn'dan veya Izzy'den gelen cevaplarla devam edin .


find /data/data/ -user UID -type d -maxdepth 1 | xargs basenameİlk findkomutta birden fazla sonuç alıyorsanız kullanın .
Firelord

Bu benim için kök olmadan çalışır.
Anubian Noob

5

Bir terminal emülatörü kurun , başlatın ve çalıştırın:

ps | grep 10058

psgrepİstediğiniz kimlik için işlemleri ve filtreleri listeler .

Ancak bu, yalnızca komutu çalıştırdığınızda uygulama çalışıyorsa çalışır.


Bunu deniyorum, ama işe yaramıyor, çünkü böyle bir uygulama zaten çalışmıyor
azat

6
Bu PID için, asker UID
Lie Ryan

2
UID, ps çıkışında ve PID'de gösterilir. Ps çıktısı tipik olarak '12345 app_118 ...' gibi satırlara sahiptir, burada 12345, PID'dir ve app_118, UID'dir (/data/system/packages.xml içindeki userId = 10118'e karşılık gelir)
Art Swri

5

ADB kabuğunda (veya terminal emülatörü) aşağıdaki komutu kullanın:

cat /proc/<your_process_id_here>/status

ve "Ad" alanına bakın. Bu işlemin adı olmalı. Yani sizin durumunuzda " cat / proc / 10058 / status " olur.


3
OP bize UID verirken 10058 burada PID olması gerekiyordu.
Firelord

0

2014'ten itibaren Android 6.0, Moto G 2nd Gen ile benzer bir sorunum vardı. ES Dosya Gezgini uygulamasını yükselttim ve cehennem gibi şişirildiğini ve çok fazla pil emildiğini gördüm. Uygulamayı sistemden kaldırdım, ancak uygulama bir zombinin işlemciyi işlemesine izin verdi. UID sizin 10118'dekine benziyordu ve pil istatistiklerinde en aç kaynak işlemi olarak listeleniyordu.

Sonra "OS Monitor" adlı bir uygulama kurdum ve bir .esfm dosyasının aslında CPU'nun% 60'ını alan tek işlem olduğunu fark ettim. Hemen ES File Explorer ile yapmak zorunda olduğunu biliyordum, ama bekleyin ... ES File Explorer'ı kaldırdım HAD. Evet. Yapmadığım tek şey akıllı telefonu yeniden başlatmaktı. İnan bana, çılgınca şeyler düşünüyordum, kök salmak ve bu sürecin saçmalıklarını atmak, telefonu duvara atmak ve hatta pilimin ömrünün sonuna geldiğine inanmaya başladım. Sürpriz, sadece telefonu yeniden başlattım ve işlem geçti.

Herhangi bir sert önlemi almadan önce, hangi uygulamanın size kötü bir zaman verdiğini anlamaya çalışın, kaldırın ve telefonu yeniden başlatın. İşletim Sistemini Kontrol Edin CPU kullanım listesini izleyin, iyi olmalısınız.


0

Çalışan işlemler, sistem uygulamaları ve donanım sensörleri de dahil olmak üzere, köklü bir telefonda UID (veya GroupID) tarafından "her şeyi" bulmak için :

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

Örnek 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

Örnek 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
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.