การถกเถียงกันถึงความชอบธรรมของการติดตั้งแอพนั้นในโทรศัพท์ของคุณคำถามของการตรวจสอบคือสิ่งที่ฉันตั้งใจจะทำความเข้าใจสักระยะหนึ่งและคุณขอให้ฉันลองหาวิธีที่เป็นไปได้ในการยืนยันว่าใครเป็นผู้เซ็นชื่อ 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 เพื่อแจ้งให้คุณทราบว่าใบรับรองใดที่ใช้ในการลงชื่อแต่ละไฟล์ดังนั้นคุณจึงมั่นใจได้ว่าใบรับรองที่คุณยืนยันนั้น
m.google.com/maps
มันมีลิงค์ดาวน์โหลดหรืออะไรให้คุณบ้างไหม?