Як я можу перевірити справжність завантаженого файлу APK?


62

Останнє оновлення Карт Google недоступне в моїй країні, тому я завантажив версію Google googling для "Google Maps 5.4.0 apk". Я насправді знайшов це, але зараз мені цікаво, як я можу сказати, чи це насправді та сама версія, що і на ринку.

Як я можу бути впевнений, що він не був підроблений? Чи додатково підписані додатки? Чи є спосіб перевірки підписів?


Якщо ви завітаєте на сторінку зі свого мобільного телефону: m.google.com/mapsчи пропонує вам посилання для завантаження чи щось подібне?
Ніколас

@ Nicolás: Це посилання на ринок, з якого я не можу його завантажити.
Натан Фелман

Не дивно, що йде від google. До речі, і я знаю, що не відповідаю на ваше первісне запитання, але ви протестували MapDroyd ?
Ніколас

@ Nicolás: У мене немає, і я фактично використовую Waze для щоденної навігації. Карти Google - лише приклад. Google Books - ще один приклад, Google Streetview - ще один (адже, схоже, лише проблеми Google додають мені цю проблему ...)
Nathan Fellman

1
Якщо у вас є другий додаток, який є "автентичним" і походить від того самого постачальника, ви можете порівняти, чи обидва додатки підписані за допомогою одних і тих же ключів / ідентичності: android.stackexchange.com/a/208326/2241
Роберт

Відповіді:


71

Якщо уникнути дискусії щодо легітимності встановлення цього додатка на телефоні, питання перевірки - це те, що я мав намір зрозуміти деякий час, і ви запропонували мені спробувати розібратися в можливому способі перевірити, хто підписався апк.

Програми для Android підписуються звичайним чином .jar-файлами (.apk насправді є лише спеціальним .jar, який є лише спеціальним .zip), однак, можливо, не тривіально відстежувати справжність сертифікатів, якщо у вас є щось, що добре відомо порівняти. Це в основному те, що робить сам телефон - підтверджує, що те, що претендує на те, що є з тієї самої сторони, як щось, що вже є на телефоні, насправді є - телефон не відмовляється встановлювати речі з невідомими підписантами, він може лише (заперечити / очистити додаток дані) очевидних підробок, коли щось нове не відповідає чомусь старому, на яке він претендує.

Вам потрібно буде мати 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 У мене те саме питання. Ви знайшли відповідь?
Кайзер Созай

@Chris Stratton Чи можна скопіювати Google Maps apk з пристрою? Тоді можна перевірити серти, як ви сказали.
Кайзер Созай

Крім того, ви можете витягнути APK з пристрою за допомогою наступної програми: play.google.com/store/apps/details?id=com.ext.ui&hl=uk Best, Paul. [Відредагував модератор Firelord]
Spipau

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)

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.