ฉันจะค้นหาชื่อแอปด้วย UID ได้อย่างไร


38

ใน "ประวัติแบตเตอรี่" ฉันพบว่าแอพที่มี UID 10058 ใช้แบตเตอรี่จำนวนมาก

ฉันจะค้นหาชื่อแอพที่มี UID เท่ากับ 10058 ได้อย่างไร

คำตอบ:


32

Android จะกำหนด UID (ID ผู้ใช้) แต่ละแอปพลิเคชันในเวลาติดตั้ง แตกต่างจาก PID (ID กระบวนการ) ซึ่งเป็นแบบชั่วคราวและเปลี่ยนแปลงตลอดเวลา UID จะคงที่ตราบใดที่ไม่ได้ติดตั้งแอปพลิเคชันใหม่ UID ควรไม่ซ้ำกันสำหรับแต่ละแอปพลิเคชันยกเว้นเมื่อแอปพลิเคชันร้องขอให้แชร์หมายเลขผู้ใช้กับแอปพลิเคชันอื่นอย่างชัดเจน (มีข้อ จำกัด ด้านความปลอดภัยเกี่ยวกับเรื่องนี้ทั้งสองแอปพลิเคชันนั้น

แอปพลิเคชันเหล่านี้อ้างว่าแสดง UID ของแอปพลิเคชัน:

แก้ไข:

ลองดูที่/data/system/packages.xml(คุณต้องรูทเพื่อดูไฟล์นี้) แต่ละแอปพลิเคชั่นที่ติดตั้งควรมีรายการอยู่ที่นั่น บอกว่าฉันติดตั้ง Adobe Reader ไว้ในโทรศัพท์ของฉันแล้ว:

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

โทรศัพท์ของฉันได้รับมอบหมายuserId="10034"ให้ Adobe Reader

สำหรับแอปพลิเคชันที่ร้องขอให้แบ่งปัน ID ผู้ใช้กับแอปพลิเคชันอื่นให้พูด 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>

แอตทริบิวต์ที่คุณต้องการคือ sharedUserId="10064"


25

ตั้งค่าในพีซีเชื่อมต่ออุปกรณ์กับพีซีเปิดตัวเชลล์บนพีซีและป้อน:

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

แทนที่UIDด้วย ID ที่คุณต้องการเช่น 10102

ตัวอย่าง:

bash-4.2 # adb shell "แพ็คเกจ dumpsys | grep -A1 'userId = 10102'"
   หมายเลขผู้ใช้ = 10102
   pkg = แพ็คเกจ {46171ce com.android.chrome }
ทุบตี-4.2 #

บรรทัดที่มีจะแสดงชื่อแพคเกจของแอปในระหว่างช่องว่างและPackage{ }คุณสามารถทำได้adb shell dumpsys package PKG_NAME( PKG_NAME→ชื่อแพ็คเกจของแอพ) เพื่อทราบรายละเอียดเพิ่มเติมเกี่ยวกับแพ็คเกจ / แอพนั้น


หาก Android รูตจากadb shellหรือเทอร์มินัลอีมูเลเตอร์คุณสามารถทำสิ่งต่อไปนี้

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

ในเอาต์พุตสิ่งใด ๆ ก่อน UID คือชื่อแพ็กเกจ

ตัวอย่าง:

shell @ shamu: / $ su
root @ shamu: / # cat /data/system/packages.list | grep 10102
com.android.chrome 10102 0 /data/data/com.android.chrome เริ่มต้น 3002,3003,3001
root @ shamu: / #

อีกทางเลือกหนึ่งถ้าคุณได้ติดตั้งBusyboxหรือToyboxภายใต้ตัวแปร PATH จากเทอร์มินัลอีมูเลเตอร์หรือadb shell ให้ทำดังนี้

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

ตัวอย่าง:

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

เนื่องจากเรามีความสนใจในป้ายชื่อของ app และไม่ได้ชื่อแพคเกจให้ดำเนินการกับคำตอบจาก GAThrawnหรือจากอิซซี่


ใช้find /data/data/ -user UID -type d -maxdepth 1 | xargs basenameหากคุณได้รับผลลัพธ์หลายรายการในfindคำสั่งแรก
Firelord

สิ่งนี้ใช้ได้กับฉันโดยไม่ต้องรูท
Anubian Noob

5

ติดตั้งเทอร์มินัลอีมูเลเตอร์เปิดใช้งานและรัน:

ps | grep 10058

psแสดงกระบวนการและgrepตัวกรองสำหรับ ID ที่คุณต้องการ

แต่จะทำงานได้ก็ต่อเมื่อแอปพลิเคชันทำงานเมื่อคุณเรียกใช้คำสั่ง


ฉันพยายามนี้ แต่มันไม่ได้ทำงานเพราะ app ดังกล่าวไม่ได้ทำงานอยู่แล้ว
Azat

6
นี่สำหรับ PID ผู้ถามหมายถึงโพสต์
โกหกไรอัน

2
UID จะแสดงในเอาต์พุต ps เช่นเดียวกับ PID เอาต์พุต ps โดยทั่วไปมีบรรทัดเช่น '12345 app_118 ... ' โดยที่ 12345 คือ PID และ app_118 เป็น UID (ตรงกับ userId = 10118 ใน /data/system/packages.xml)
Art Swri

5

ใน ADB เชลล์ (หรือเทอร์มินัลอีมูเลเตอร์) ใช้คำสั่งต่อไปนี้:

cat /proc/<your_process_id_here>/status

และดูในฟิลด์ "ชื่อ" นี่ควรเป็นชื่อของกระบวนการ ดังนั้นในกรณีของคุณมันจะเป็น " cat / proc / 10058 / status "


3
10058 น่าจะเป็น PID ที่นี่ในขณะที่ OP ให้ UID กับเรา
Firelord

0

ฉันมีปัญหาที่คล้ายกันกับ Android 6.0, Moto G 2nd Gen จากปี 2014 ฉันได้อัพเกรดแอปพลิเคชั่น ES File Explorer และฉันสังเกตว่ามันป่องเหมือนนรกและดูดแบตเตอรี่จำนวนมาก ฉันลบแอปพลิเคชันออกจากระบบ แต่แอปพลิเคชันปล่อยให้กระบวนการซอมบี้ทำให้ CPU ทำงาน โพสต์คล้ายกับของคุณ 1,0118 และมันแสดงอยู่ในสถิติแบตเตอรี่ว่าเป็นกระบวนการทรัพยากรที่หิวที่สุด

จากนั้นฉันติดตั้งแอพชื่อ "OS Monitor" และสังเกตว่าไฟล์. esfm เป็นกระบวนการเดียวที่ใช้ CPU ถึง 60% ฉันรู้ทันทีว่ามันเกี่ยวกับ ES File Explorer แต่รอ ... ฉันได้ถอนการติดตั้ง ES File Explorer แล้ว ใช่. สิ่งเดียวที่ฉันไม่ได้ทำคือรีสตาร์ทสมาร์ทโฟน เชื่อฉันฉันกำลังคิดเกี่ยวกับสิ่งต่าง ๆ ที่บ้าคลั่งเช่นหยั่งรากและเอาชนะอึออกจากกระบวนการนั้นโยนโทรศัพท์ไปที่กำแพงและเริ่มเชื่อว่าแบตเตอรี่ของฉันหมดอายุ ด้วยความประหลาดใจฉันเพิ่งรีสตาร์ทโทรศัพท์และกระบวนการก็หายไป

ดังนั้นก่อนที่จะใช้มาตรการรุนแรงลองคิดดูว่าแอพใดให้เวลาคุณไม่ดีถอนการติดตั้งแล้วรีสตาร์ทโทรศัพท์ ตรวจสอบระบบปฏิบัติการตรวจสอบรายการการใช้งาน CPU และคุณควรจะปรับ


0

เพื่อหาข้อมูลทุกอย่าง "" โดยโพสต์ (หรือ groupID) บนฝังรากโทรศัพท์รวมทั้งกระบวนการทำงานปพลิเคชันระบบและเซ็นเซอร์ฮาร์ดแวร์:

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

ตัวอย่างที่ 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

ตัวอย่างที่ 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
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.