Yanıtlar:
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"
PC'de adb kurun , cihazı PC'ye bağlayın, PC'de bir kabuk açın ve şunu girin:
adb shell "dumpsys package | grep -A1 'userId=UID'"
UID
10102 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 .
Bir terminal emülatörü kurun , başlatın ve çalıştırın:
ps | grep 10058
ps
grep
İ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.
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.
Ç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
# 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
# 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
find /data/data/ -user UID -type d -maxdepth 1 | xargs basename
İlkfind
komutta birden fazla sonuç alıyorsanız kullanın .