ฉันจะตรวจสอบความถูกต้องของไฟล์ APK ที่ฉันดาวน์โหลดได้อย่างไร


62

การอัปเดตล่าสุดของ Google Maps ไม่สามารถใช้ได้ในประเทศของฉันดังนั้นฉันจึงดาวน์โหลดรุ่นโดย googling สำหรับ "Google Maps 5.4.0 apk" อันที่จริงฉันค้นพบแล้ว แต่ตอนนี้ฉันสงสัยว่าฉันจะบอกได้อย่างไรว่านี่เป็นรุ่นเดียวกับในตลาดจริงหรือไม่

ฉันจะแน่ใจได้อย่างไรว่าไม่ได้ถูกดัดแปลง แอพลงชื่อเข้าใช้ด้วยวิธีใดบ้าง? มีวิธีตรวจสอบลายเซ็นหรือไม่?


หากคุณเข้าชมหน้ามือถือของคุณ: m.google.com/mapsมันมีลิงค์ดาวน์โหลดหรืออะไรให้คุณบ้างไหม?
Nicolás

@ Nicolás: มันเชื่อมโยงไปยังตลาดซึ่งฉันไม่สามารถดาวน์โหลดได้
Nathan Fellman

ไม่น่าแปลกใจที่มาจาก google โดยวิธีการและฉันรู้ว่าฉันไม่ได้ตอบคำถามเดิมของคุณ แต่คุณได้ทดสอบMapDroyd ?
Nicolás

@ Nicolás: ฉันไม่ได้และจริง ๆ แล้วฉันใช้Wazeสำหรับการนำทางแบบวันต่อวัน Google Maps เป็นเพียงตัวอย่าง Google หนังสือเป็นอีกตัวอย่างหนึ่ง Google Streetview ยังเป็นอีกหนึ่ง (อันที่จริงดูเหมือนว่าแอพของ Google เท่านั้นที่ทำให้ฉันมีปัญหานี้ ... )
Nathan Fellman

1
หากคุณมีแอปที่สองที่เป็น "ของแท้" และมาจากผู้ขายรายเดียวกันคุณสามารถเปรียบเทียบได้ว่าทั้งสองแอปได้รับการลงชื่อโดยใช้คีย์ / ข้อมูลตัวตนเดียวกัน: android.stackexchange.com/a/208326/2241
Robert

คำตอบ:


71

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

แอพ Android มีการลงชื่อในลักษณะปกติของไฟล์. jar (.apk เป็นเพียง. jar พิเศษซึ่งเป็นเพียงไฟล์. zip พิเศษ) อย่างไรก็ตามมันอาจไม่สำคัญในการติดตามความถูกต้องของใบรับรองเว้นแต่ว่าคุณมีสิ่งที่รู้จักดี เปรียบเทียบกับ. โดยทั่วไปแล้วสิ่งที่โทรศัพท์ทำ - ตรวจสอบว่าสิ่งที่อ้างว่ามาจากบุคคลเดียวกันกับสิ่งที่มีอยู่แล้วในโทรศัพท์จริง - โทรศัพท์ไม่ปฏิเสธที่จะติดตั้งสิ่งที่มีผู้เซ็นชื่อที่ไม่รู้จักมันสามารถทำได้เท่านั้น data of) การปลอมแปลงที่ชัดเจนเมื่อสิ่งใหม่ไม่ตรงกับสิ่งเก่าที่มันอ้าง

คุณจะต้องมี jarsigner และ keytool ฉันเชื่อว่าสิ่งเหล่านี้มาจาก JDK ซึ่งเป็นข้อกำหนดเบื้องต้นสำหรับ android SDK แทนที่จะเป็น SDK เอง

ก่อนอื่นคุณต้องลองยืนยันรหัสสาธารณะที่อยู่ใน. apk โดยปกติจะอยู่ใน META-INF / CERTS.RSA แต่อาจอยู่ในไฟล์อื่น - unzip -l จะบอกคุณ คุณต้องการที่จะเห็นสิ่งที่คุณสามารถหาข้อมูลเกี่ยวกับมัน:

unzip -p suspect.apk META-INF/CERT.RSA | keytool -printcert

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

unzip -p suspect.apk META-INF/CERT.RSA | keytool -printcert | grep MD5
unzip -p knowngood.apk META-INF/CERT.RSA | keytool -printcert | grep MD5

หากคุณมี apk ที่เชื่อถือได้เป็นที่รู้จักจากผู้เขียนคนเดียวกันที่ใช้ใบรับรองเดียวกัน ฉันสมมติว่าใบรับรองที่มีผลรวม MD5 เดียวกันนั้นเพียงพอแล้ว

สมมติว่าคุณตัดสินใจเชื่อถือใบรับรองแล้วคุณสามารถดูว่ามีการใช้เพื่อลงชื่อแต่ละไฟล์ภายใน. apk หรือไม่

jarsigner -verbose -verify suspect.apk

(หากมีไฟล์. RSA มากกว่าหนึ่งไฟล์ในไฟล์เก็บถาวรคุณควรเพิ่มแฟล็ก -certs เพื่อแจ้งให้คุณทราบว่าใบรับรองใดที่ใช้ในการลงชื่อแต่ละไฟล์ดังนั้นคุณจึงมั่นใจได้ว่าใบรับรองที่คุณยืนยันนั้น


9
มีวิธีในการตรวจสอบว่า apk ที่ระบุนั้นเหมือนกับของทางการในร้านค้า Google Play หรือไม่?
Bryce

@ ไบรซ์ฉันมีคำถามเดียวกัน คุณพบคำตอบหรือไม่?
Kaizer Sozay

@Chris Stratton เป็นไปได้ไหมที่จะคัดลอก Google Maps apk จากอุปกรณ์? จากนั้นหนึ่งสามารถตรวจสอบ certs ตามที่คุณพูด
Kaizer Sozay

นอกจากนี้คุณสามารถแยก APK จากอุปกรณ์ด้วยแอปพลิเคชันต่อไปนี้: play.google.com/store/apps/details?id=com.ext.ui&hl=th Best, Paul [แก้ไขโดย Moderator
Firelord

4

มี (ตอนนี้) apksignerเครื่องมือในการbuild-toolsทำสิ่งที่คุณต้องการ จากเอกสาร :

ตรวจสอบว่าลายเซ็นของ APK คาดว่าจะได้รับการยืนยันว่าใช้ได้บนแพลตฟอร์ม Android ทั้งหมดที่ APK รองรับ:

apksigner verify [options] app-name.apk

1

นอกจากนี้คุณยังสามารถลองอัปโหลด APK ไปฟรีVirusTotal.comตรวจสอบไวรัส มันจะสร้างแฮชที่ไม่ซ้ำกันสำหรับ APK และถ้ามีคนอื่นอัปโหลดแล้วเพื่อทดสอบ (น่าจะมาก) คุณจะมีความคิดมากกว่านี้ว่า APK นั้นใช้ได้

บริการนี้จะสแกน APK ที่มีสแกนเนอร์ไวรัสกว่า 60 เครื่องและแจ้งให้คุณทราบหากเชื่อว่ามีลายเซ็นคล้ายกับไวรัสที่พบแล้ว


0

ในการเปรียบเทียบใบรับรองจากไฟล์ apk ที่น่าสงสัยอาจเป็นแนวคิดหนึ่งที่จะดาวน์โหลดรุ่นนั้นใน Play Store อย่างเป็นทางการในโทรศัพท์ของคุณทำการสำรองข้อมูลบนคอมพิวเตอร์ของคุณและไปที่ไดเรกทอรีสำรองเลือกไฟล์ apk ที่เกี่ยวข้องและทำการตรวจสอบเดียวกัน นอกจากนี้คุณยังสามารถดูใบรับรองของ Google ได้โดยทำเครื่องหมายบนแอปพลิเคชันที่เป็นค่าเริ่มต้นของอุปกรณ์ (เช่น com.google.android ใด ๆ * apk)

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