İndirdiğim bir APK dosyasının orijinalliğini nasıl doğrulayabilirim?


62

Ülkemde Google Haritalar’ın en son güncellemesi kullanılamıyor, bu yüzden "Google Haritalar 5.4.0 apk" için Google tarafından bir sürüm indirdim. Aslında onu buldum ama şimdi bunun piyasadakiyle aynı sürüm olup olmadığını nasıl anlayabileceğimi merak ediyorum.

Tahrif edilmediğinden nasıl emin olabilirim? Uygulamalar herhangi bir şekilde imzalandı mı? İmzaları kontrol etmenin bir yolu var mı?


Cep telefonunuzdan, sayfasını ziyaret ederseniz:, m.google.com/mapssize bir indirme bağlantısı veya benzeri bir şey sunuyor mu?
Nicolás

@ Nicolás: İndiremediğim pazara bağlantı sağlıyor.
Nathan Fellman

Google'dan gelmesi şaşırtıcı değil. Bu arada, asıl sorunuzu yanıtlayamadığımı biliyorum ama MapDroyd'u test ettiniz mi?
Nicolás

@ Nicolás: Yapmadım ve aslında günlük olarak navigasyon için Waze'i kullanıyorum . Google Haritalar sadece bir örnek. Google Kitaplar başka bir örnektir, Google Streetview bir başkasıdır (aslında sadece Google uygulamaları bana bu sıkıntıyı veriyor gibi görünüyor ...)
Nathan Fellman

1
"Orijinal" olan ve aynı satıcıdan gelen ikinci bir uygulamanız varsa, her iki uygulamanın da aynı anahtarları / kimliği kullanarak imzalayıp imzalamadığını karşılaştırabilirsiniz: android.stackexchange.com/a/208326/2241
Robert

Yanıtlar:


71

Bu uygulamayı telefonunuza yükleme meşruiyeti konusundaki tartışmayı ortadan kaldırırken, doğrulama sorusu bir süredir anlamayı istediğim bir konudur ve benden kimin imzaladığını doğrulamanın yolunu bulmaya çalışmamı istediniz. Bir apk.

Android uygulamaları (.apk gerçekten sadece özel bir .zip sadece özel bir .jar olan) ancak önemsiz olmayabilir .jar dosyaları normal şekilde imzalanır iz bir şey için iyi bilinen sürece sertifikaların doğruluğunu karşılaştırmak. Telefonun kendisi de temelde böyledir - telefonda zaten bir kişiyle aynı partiden olduğunu iddia eden bir şeyin gerçekte olduğunu doğrular - telefon bilinmeyen imzalı bir şeyleri yüklemeyi reddetmez, sadece () verileri, yeni bir şeyin iddia ettiği eski bir şeyle eşleşmediği zaman görünürde sahtecilik yapar.

Jarsigner ve keytool'a ihtiyacınız olacak. Bunların, SDK'nın kendisinden ziyade android SDK'nın ön şartı olan JDK'dan geldiğine inanıyorum.

İlk önce, .apk içinde yer alan ortak anahtarı doğrulamaya çalışın. Genellikle bu META-INF / CERTS.RSA içindedir, ancak başka bir dosyada olabilir - unzip -l size söyleyecektir. Bu konuda ne bulabileceğini görmek istiyorsun:

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

Bu, imzalayanın kim olduğunu iddia ettiği hakkında birçok bilgi bırakacak. Bazı sertifikaların görünüşte bilinen taraflarca imzalanmış olmasına rağmen, bunun nasıl izleneceğine karar vermeden, böyle bir şey yapabileceğinden şüpheleniyorum:

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

Bilinen güvenilir bir apk varsa, aynı sertifikayı kullanan aynı yazardan. Aynı MD5 toplamına sahip olan sertifikaların yeterli olduğunu farz ediyorum.

Sertifikaya güvenmeye karar verdiğinizi varsayarak, .apk içindeki her bir dosyayı imzalamak için kullanılmış olup olmadığını görebilirsiniz.

jarsigner -verbose -verify suspect.apk

(Arşivde birden fazla .RSA dosyası varsa, her dosyayı imzalamak için hangi sertifikaların kullanıldığını size bildirmek için -certs bayrağını eklemelisiniz, böylece onayladığınız sertifikanın olduğundan emin olabilirsiniz)


9
Belirli bir apk'nin Google Play mağazasındaki resmi ile aynı olduğunu doğrulamanın bir yolu var mı?
Bryce

@Bryce Aynı sorum var. Bir cevap buldunuz mu?
Kaizer Sozay 19:15

@Chris Stratton Google Maps apk cihazdan kopyalamak mümkün mü? Daha sonra dediğiniz gibi birileri kontrol edebilirsiniz.
Kaizer Sozay

Ek olarak, aşağıdaki uygulamayla bir cihazdan bir APK çıkarabilirsiniz: play.google.com/store/apps/details?id=com.ext.ui&hl=tr Best, Paul. [Moderatör
Firelord

4

İstediğinizi yapan bir apksigneraraç var (şimdi) build-tools. Gönderen docs :

APK'nin imzalarının, APK'nin desteklediği tüm Android platformlarında geçerli olduğu doğrulanıp doğrulanmadığını kontrol edin:

apksigner verify [options] app-name.apk

1

APK'yi ücretsiz VirusTotal.com virüs denetleyicisine yüklemeyi de deneyebilirsiniz . APK için benzersiz bir karma üretecektir ve eğer diğerleri test etmek için yükledilerse (büyük olasılıkla) o zaman APK'nın geçerli olduğu hakkında daha fazla fikre sahip olacaksınız.

Servis ayrıca APK’yı 60’ın üzerinde virüs tarayıcısıyla tarayacak ve daha önce bulunan virüslere benzer imzaları olup olmadığına inanıp size haber verecek.


0

Şüpheli bir apk dosyasındaki sertifikaları karşılaştırmak için belki de bir fikir, telefonunuzdaki resmi Google Play Store'daki sürümünü indirmek, bilgisayarınızda bir yedekleme yapmak ve yedekleme dizinine gitmek, ilgili apk dosyasını seçmek ve aynı kontrolleri yapmaktır. Aygıtın varsayılan uygulamasında yapılan kontrolleri yaparak Google sertifikalarını da görüntüleyebilirsiniz (herhangi bir com.google.android gibi. * Apk)

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.