วิธีดูสิทธิ์ของแอพ Android ก่อนติดตั้ง APK

A smartphone showing a list of app permissions with a magnifying glass

เมื่อคุณติดตั้งแอปจาก Google Play Store Android จะแสดงข้อมูลสรุปแบบง่ายเกี่ยวกับสิ่งที่แอปสามารถเข้าถึงได้ ไซด์โหลด APK จากแหล่งที่ไม่ใช่ Play และคุณจะไม่มีเครือข่ายความปลอดภัยดังกล่าว เว้นแต่คุณจะอ่านไฟล์ Manifest ด้วยตัวเอง "แอปวอลเปเปอร์ควรต้องมีการเข้าถึง SMS และไมโครโฟนจริงๆ หรือไม่" เป็นคำถามประเภทเดียวกับคู่มือนี้ที่จะช่วยคุณตอบ

สิ่งต่อไปนี้คือขั้นตอนการทำงานเดียวกันกับที่ทีมของเราใช้ในการคัดแยก APK ที่ไม่คุ้นเคย: เปิดมัน อ่านรายการ uses-permission ถอดรหัสระดับการป้องกัน และเปรียบเทียบสิ่งที่แอป พูดว่า ต้องการกับสิ่งที่หมวดหมู่มักจะต้องการ เครื่องมือข้อมูล APK ออนไลน์ ของเราทำการถอดรหัสไบนารี-XML ให้กับคุณ ดังนั้นกระบวนการทั้งหมดจะใช้เวลาประมาณสิบวินาที

เวลาในการอ่าน: ~9 นาที เครื่องมือที่จำเป็น: เบราว์เซอร์; ไม่จำเป็น apksigner และ aapt2 จาก Android SDK หากคุณต้องการตรวจสอบแบบเดียวกันจากเทอร์มินัล สิ่งที่คุณสามารถทำได้ในตอนท้าย: อ่านรายการอนุญาตทั้งหมดของ APK ค้นหาคำขอ "ผลกระทบสูง" สี่หรือห้าคำขอที่มักจะบ่งบอกถึงปัญหา และตัดสินใจว่าจะติดตั้งก่อนการติดตั้ง ไม่ใช่หลังจากนั้น

เหตุใดจึงต้องกังวลเรื่องสิทธิ์การตรวจสอบ?

นักพัฒนาที่เป็นอันตรายนำแอปฟรียอดนิยม ดัดแปลง และเผยแพร่อีกครั้งบนไซต์บุคคลที่สาม แม้ว่าแอปอาจดูและทำงานได้ตามปกติ แต่โค้ดที่ซ่อนไว้อาจกำลังคัดลอกรายชื่อผู้ติดต่อของคุณหรือบันทึกเสียงพื้นหลังของคุณ เมื่อดูสิทธิ์ ก่อนการติดตั้ง คุณจะมองเห็นธงสีแดงของ "การอนุญาตคืบคลาน"

วิธีตรวจสอบไฟล์ APK ใด ๆ (ออนไลน์)

เครื่องมือข้อมูล APK ของเราจะอ่านรายการไฟล์ของคุณทั้งหมดในเบราว์เซอร์ของคุณ ไฟล์จะไม่ถูกอัปโหลดไปยังเซิร์ฟเวอร์ และไม่มีการดำเนินการโค้ด นี่คือวิธีการใช้งาน:

กระบวนการ:

  1. ไปที่ หน้าข้อมูล APK
  2. เลือกไฟล์ .apk ของคุณ
  3. รอให้การวิเคราะห์เสร็จสิ้น (ปกติคือ 5 วินาที)
  4. เลื่อนลงไปที่ ส่วนการอนุญาต
  5. มองหาธงที่มีความเสี่ยงสูง เช่น READ_SMS, PROCESS_OUTGOING_CALLS หรือ ACCESS_FINE_LOCATION

รายการธงแดงอนุญาต

หากแอป เครื่องคิดเลข หรือ ไฟฉาย ถามถึง READ_CONTACTS หรือ RECORD_AUDIO ให้ลบไฟล์ทันที ไม่มีเหตุผลที่ถูกต้องตามกฎหมายที่แอปเหล่านี้จะมีข้อมูลดังกล่าว

ทำความเข้าใจระดับสิทธิ์ของ Android

สิทธิ์ทั้งหมดไม่ได้ถูกสร้างขึ้นเท่ากัน Android แบ่งออกเป็นสามระดับ:

วิธีการด้วยตนเอง (การใช้ ZIP Viewer)

หากคุณมีทักษะด้านเทคนิค คุณสามารถตรวจสอบการอนุญาตได้ด้วยตัวเอง:

  1. เปลี่ยนชื่อ app.apk เป็น app.zip แล้วเปิดขึ้นมา
  2. ค้นหา AndroidManifest.xml (หมายเหตุ: อยู่ในรูปแบบไบนารีและจะมีลักษณะเป็นคำพูดที่ไม่มีความหมายในโปรแกรมแก้ไขข้อความ)
  3. ใช้เครื่องมือเช่น AXMLPrinter เพื่อแปลงเป็นข้อความที่อ่านได้
  4. ค้นหาแท็กที่ขึ้นต้นด้วย <uses-permission>

คำแนะนำ: การใช้ เครื่องมือออนไลน์ ของเราเร็วกว่ามากซึ่งจะถอดรหัสสิ่งนี้ให้คุณทันที

ตรวจสอบแอปของคุณตอนนี้

รู้ว่าแอพของคุณขออะไร ไม่มีความลับไม่มีความเสี่ยง

ตรวจสอบสิทธิ์ APK

สิ่งที่เก็บไว้จริงใน AndroidManifest.xml

ไฟล์ Manifest คือแหล่งที่มาของความจริงสำหรับทุกสิทธิ์ ส่วนประกอบ และฟีเจอร์ที่แอปประกาศ ภายใน APK ไฟล์จะอยู่ในรูปแบบ XML ไบนารี ไม่ใช่ข้อความธรรมดาที่คุณเห็นในซอร์สโค้ด ดังนั้นจึงไม่สามารถอ่านได้ด้วยโปรแกรมแก้ไขข้อความทั่วไป เครื่องมือข้อมูล APK ของเราจะถอดรหัส XML ไบนารีและแสดงแท็กที่เกี่ยวข้อง สิ่งที่สำคัญที่สุดคือ:

ระดับการป้องกันการอนุญาต: แผ่นโกง

Android กำหนด "ระดับการป้องกัน" ทุกการอนุญาต การรู้ว่าคำขอเป็นของระดับใดจะบอกคุณได้ว่าระบบปฏิบัติการจะปฏิบัติต่อคำขอนั้นอย่างจริงจังเพียงใด

ระดับการป้องกัน ประสบการณ์ผู้ใช้ ตัวอย่าง
ปกติ ได้รับอย่างเงียบๆ ณ เวลาติดตั้ง ไม่มีพรอมต์. อินเทอร์เน็ต, สั่น, ACCESS_NETWORK_STATE, WAKE_LOCK
อันตราย รันไทม์พร้อมท์ในครั้งแรกที่ใช้ฟีเจอร์ เพิกถอนได้ในการตั้งค่า กล้อง, RECORD_AUDIO, READ_CONTACTS, ACCESS_FINE_LOCATION
ลายเซ็น มอบให้เฉพาะกับแอปที่ลงนามด้วยใบรับรองเดียวกันกับแอปหรือระบบปฏิบัติการที่ให้สิทธิ์เท่านั้น BIND_VPN_SERVICE, INSTALL_PACKAGES (เฉพาะระบบ)
ลายเซ็น | สิทธิพิเศษ ใช้ได้เฉพาะกับแอปที่ติดตั้งไว้ล่วงหน้าในไดเร็กทอรี priv-app ของอิมเมจระบบ จัดการ_ผู้ใช้, READ_LOGS
แอพป๊อป / บทบาท ต้องมีขั้นตอนการตั้งค่าแยกต่างหากจึงจะเปิดใช้งานได้ SYSTEM_ALERT_WINDOW, BIND_ACCESSIBILITY_SERVICE, จัดการ_EXTERNAL_STORAGE

สิทธิ์ "ซ่อน" หมายถึงอะไรจริงๆ

ความเข้าใจผิดที่พบบ่อยคือสิทธิ์บางอย่างเป็นความลับ ไม่ใช่: ทุกสิทธิ์ที่แอปอาจใช้จะต้องประกาศใน AndroidManifest.xml และระบบปฏิบัติการปฏิเสธที่จะให้สิทธิ์ใด ๆ ที่ไม่อยู่ในรายการ สิ่งที่ผู้คนมักหมายถึงคำว่า "ซ่อนเร้น" เป็นหนึ่งในสองสิ่ง:

ไม่ว่าจะด้วยวิธีใด คำตอบก็เหมือนกัน: อ่านรายการ อย่าเชื่อถือคำอธิบายของ Play Store เพียงอย่างเดียว

ตัวอย่างการทำงาน: การตรวจสอบ APK จริง

สมมติว่าคุณมี example.apk อยู่ในโฟลเดอร์ดาวน์โหลดของคุณ นี่คือขั้นตอนการทำงานที่แน่นอน:

  1. เปิด เครื่องมือข้อมูล APK ในเบราว์เซอร์ของคุณ
  2. วาง APK ลงในพื้นที่อัปโหลด การประมวลผลเกิดขึ้นภายในเครื่อง ไฟล์จะไม่ออกจากอุปกรณ์ของคุณ
  3. อ่านส่วน สิทธิ์ แต่ละรายการจะแสดงชื่อคงที่ (android.permission.READ_CONTACTS และคำอธิบายภาษาธรรมดาว่าอนุญาตอะไรบ้าง)
  4. เปรียบเทียบรายการกับหมวดหมู่ของแอป โดยคร่าวๆ คาดว่า:
    • แอพกล้อง: CAMERA, RECORD_AUDIO (สำหรับวิดีโอ), การจัดเก็บ/สื่อเขียน
    • อินเทอร์เน็ต แอพส่งข้อความ:, READ_CONTACTS, SEND_SMS (หากใช้ SMS เท่านั้น), RECORD_AUDIO (สำหรับบันทึกเสียง), CAMERA (สำหรับการส่งรูปภาพ)
    • อินเทอร์เน็ต เกม: บางครั้ง RECORD_AUDIO (สำหรับการแชทด้วยเสียงในเกม) สิทธิ์ที่เกี่ยวข้องกับการเรียกเก็บเงิน ไม่ค่อยมีสิ่งอื่นใด
    • แอพยูทิลิตี้ (เครื่องคิดเลข, ไฟฉาย, สภาพอากาศ): อินเทอร์เน็ต (สำหรับโฆษณา), ACCESS_NETWORK_STATE, อาจเป็น LOCATION (สภาพอากาศเท่านั้น) มีอะไรเกินกว่านั้นก็น่าสงสัย
  5. หากมีสิ่งใดในรายการไม่ตรงกับหมวดหมู่ ห้ามติดตั้ง ไม่มีเหตุผลที่ดีที่เครื่องคิดเลขจำเป็นต้องเข้าถึง SMS

ตรรกะเดียวกันนี้มีผลไม่ว่าไฟล์จะเป็น APK, XAPK (โดยที่เราอ่าน APK ฐานภายใน) หรือชุด APKS (โดยที่เราอ่านไฟล์ Manifest ของการแยกแต่ละรายการ)

ทำมันจาก Command Line

หากคุณต้องการเส้นทางเทอร์มินัล Android SDK จะส่ง aapt2 ซึ่งจะทิ้งรายการจาก APK ใด ๆ ในรูปแบบ XML ธรรมดา:

aapt2 dump badging example.apk | grep "uses-permission"

หรือใช้ apksigner เพื่อตรวจสอบใบรับรองการลงนามในเวลาเดียวกัน:

apksigner verify --print-certs example.apk

เครื่องมือเบราว์เซอร์ทำสิ่งเดียวกันสำหรับผู้ใช้ที่ไม่ต้องการติดตั้ง SDK เพียงเพื่อตรวจสอบไฟล์เดียว

คำถามที่พบบ่อย (FAQ)

ฉันสามารถปฏิเสธการอนุญาตหลังจากติดตั้ง APK ได้หรือไม่

ใช่. บน Android 6.0 ขึ้นไป คุณสามารถไปที่ การตั้งค่า > แอป > [ชื่อแอป] > การอนุญาต เพื่อเปิดหรือปิดการอนุญาตที่เป็นอันตรายแต่ละรายการได้

ไฟล์ XAPK มีสิทธิ์ที่แตกต่างกันหรือไม่

XAPK มี APK หนึ่งรายการขึ้นไป APK ภายในแต่ละไฟล์มีไฟล์ Manifest ของตัวเอง เครื่องมือของเราจะวิเคราะห์ APKหลัก ภายในบันเดิลเพื่อแสดงสิทธิ์ที่เกี่ยวข้อง

เหตุใดทุกแอปจึงขอ "การเข้าถึงเครือข่าย"

แอพเกือบทั้งหมดจำเป็นต้องเชื่อมต่ออินเทอร์เน็ตเพื่อการวิเคราะห์ รายงานจุดบกพร่อง หรือโฆษณา แม้ว่าจะเป็นเรื่องปกติ แต่ข้อมูลที่ถูกขโมยจะถูกส่งไปยังเซิร์ฟเวอร์ของแฮ็กเกอร์ด้วย

การตรวจสอบสิทธิ์อย่างชัดแจ้งก่อนที่คุณจะแตะติดตั้ง

คุณไม่สามารถตัดสินสิ่งที่คุณไม่เห็นได้ การใช้เวลาสิบวินาทีกับ ดูการอนุญาตของ APK ก่อนที่คุณจะไซด์โหลด ความแตกต่างระหว่างการรู้ว่าแอปสามารถเข้าถึงอะไรและการหวังว่าแอปจะทำงานได้ อ่านรายการก่อน และติดตั้งครั้งที่สอง

ออกแบบและจัดทำเอกสารโดย Mst Shaefale หัวหน้านักพัฒนาและสถาปนิกแพ็คเกจ Android • ตรวจสอบแล้วบน Android 12–15

Mst Shaefale ดูแลการควบรวมกิจการ XAPK/APKS ฝั่งไคลเอ็นต์, ตัวแยกวิเคราะห์รายการไบนารี และเครื่องมือลงนาม APK v1+v2 ที่ xapktoapk.com พบคำสั่งที่ล้าสมัยหรือการเปลี่ยนแปลงระบบปฏิบัติการหรือไม่ ส่งบันทึกบรรณาธิการ