Làm cách nào để xác minh tính xác thực của tệp APK tôi đã tải xuống?


62

Bản cập nhật mới nhất của Google Maps không có sẵn ở quốc gia của tôi, vì vậy tôi đã tải xuống một phiên bản bằng cách googling cho "apk Google Maps 5.4.0". Trong thực tế tôi đã tìm thấy nó, nhưng bây giờ tôi tự hỏi làm thế nào tôi có thể biết nếu đây thực tế là phiên bản giống như trên thị trường.

Làm thế nào tôi có thể chắc chắn rằng nó đã không bị giả mạo? Các ứng dụng được ký theo bất kỳ cách nào? Có cách nào để kiểm tra chữ ký?


Nếu bạn truy cập, từ điện thoại di động của bạn, trang : m.google.com/maps, nó có cung cấp cho bạn một liên kết tải xuống hoặc một cái gì đó giống nhau không?
Nicolás

@ Nicolás: Nó liên kết với thị trường, từ đó tôi không thể tải xuống.
Nathan Fellman

Không ngạc nhiên khi đến từ google. Nhân tiện, và tôi biết tôi không trả lời câu hỏi ban đầu của bạn, nhưng bạn đã kiểm tra MapDroyd chưa?
Nicolás

@ Nicolás: Tôi chưa, và tôi thực sự sử dụng Waze cho việc điều hướng hàng ngày của mình. Google Maps chỉ là một ví dụ. Google Books là một ví dụ khác, Google Streetview còn một ví dụ khác (thực tế có vẻ như chỉ có các ứng dụng Google mang đến cho tôi rắc rối này ...)
Nathan Fellman

1
Nếu bạn có một ứng dụng thứ hai là "xác thực" và đến từ cùng một nhà cung cấp, bạn có thể so sánh nếu cả hai ứng dụng được ký bằng cùng một khóa / danh tính: android.stackexchange.com/a/208326/2241
Robert

Câu trả lời:


71

Tạm gác lại cuộc tranh luận về tính hợp pháp của việc cài đặt ứng dụng đó trên điện thoại của bạn, câu hỏi xác minh là câu hỏi mà tôi có ý định tìm hiểu trong một thời gian, và bạn đã nhắc tôi cố gắng tìm ra cách xác minh ai đã ký một apk.

Các ứng dụng Android được ký theo cách thông thường của các tệp .jar (.apk thực sự chỉ là một .jar đặc biệt chỉ là một .zip đặc biệt) tuy nhiên việc theo dõi tính xác thực của các chứng chỉ trừ khi bạn biết điều gì đó tốt so với. Về cơ bản đó là những gì điện thoại tự làm - xác minh rằng thứ gì đó được cho là của cùng một bên với điện thoại thực sự là - điện thoại không từ chối cài đặt mọi thứ với người ký không xác định, chỉ có thể (phản đối / xóa ứng dụng dữ liệu của) các giả mạo rõ ràng khi một cái gì đó mới không khớp với cái cũ mà nó tuyên bố.

Bạn sẽ cần phải có jarsigner và keytool. Tôi tin rằng những điều này đến từ JDK, đây là điều kiện tiên quyết cho SDK Android chứ không phải chính SDK.

Trước tiên, bạn muốn thử xác minh khóa chung có trong .apk. Thông thường, đây là trong META-INF / CERTS.RSA nhưng nó có thể ở một tệp khác - unzip -l sẽ cho bạn biết. Bạn muốn xem những gì bạn có thể tìm hiểu về nó:

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

Điều đó sẽ tiết lộ rất nhiều thông tin về người ký tên tuyên bố. Một số chứng chỉ dường như được ký bởi các bên đã biết, nhưng không tìm ra cách truy tìm điều đó, tôi nghi ngờ bạn có thể làm điều gì đó như thế này:

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

Nếu bạn có một apk đáng tin cậy được biết đến từ cùng một tác giả đã sử dụng cùng một chứng chỉ. Tôi giả sử rằng các chứng chỉ có cùng số tiền MD5 là đủ.

Giả sử bạn đã quyết định tin tưởng chứng chỉ, thì bạn có thể xem liệu nó đã được sử dụng để ký từng tệp trong .apk chưa

jarsigner -verbose -verify suspect.apk

(Nếu có nhiều hơn một tệp .RSA trong kho lưu trữ, bạn nên thêm cờ -certs để cho bạn biết (các) chứng chỉ nào đã được sử dụng để ký từng tệp, vì vậy bạn có thể chắc chắn chứng chỉ mà bạn đã xác minh)


9
Có cách nào để xác minh apk đã cho giống với apk chính thức trên cửa hàng Google Play không?
Bryce

@Bryce Mình cũng có câu hỏi tương tự. Bạn đã tìm thấy một câu trả lời?
Kaizer Sozay

@Chris Stratton Có thể sao chép apk Google Maps khỏi thiết bị không? Sau đó, người ta có thể kiểm tra các certs như bạn nói.
Kaizer Sozay

Ngoài ra, bạn có thể trích xuất APK từ một thiết bị có ứng dụng sau: play.google.com/store/apps/details?id=com.ext.ui&hl=vi Best, Paul. [Được chỉnh sửa bởi Moderator Firelord]
Spipau

4

Có (bây giờ) một apksignercông cụ trong build-toolsđó thực hiện những gì bạn muốn. Từ các tài liệu :

Kiểm tra xem chữ ký của APK có được xác nhận là hợp lệ trên tất cả các nền tảng Android mà APK hỗ trợ hay không:

apksigner verify [options] app-name.apk

1

Bạn cũng có thể thử tải APK lên trình kiểm tra vi rút VirusTotal.com miễn phí . Nó sẽ tạo ra một hàm băm duy nhất cho APK và nếu những người khác đã tải nó lên để kiểm tra nó (rất có thể) thì bạn sẽ có thêm ý tưởng rằng APK là hợp lệ.

Dịch vụ cũng sẽ quét APK với hơn 60 máy quét vi-rút và cho bạn biết nếu nó tin rằng nó có chữ ký tương tự như vi-rút đã được tìm thấy.


0

Để so sánh các chứng chỉ từ tệp apk nghi ngờ, có thể một ý tưởng là tải xuống phiên bản của nó trên Play Store chính thức trên điện thoại của bạn, thực hiện sao lưu trên máy tính của bạn và vào thư mục sao lưu, chọn tệp apk có liên quan và thực hiện kiểm tra tương tự. Bạn cũng có thể xem các chứng chỉ Google bằng cách kiểm tra trên ứng dụng mặc định của thiết bị (như mọi com.google.android. * Apk)

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.