다운로드 한 APK 파일의 진위 여부를 어떻게 확인할 수 있습니까?


62

우리 나라에서는 최신 Google지도 업데이트를 사용할 수 없으므로 "Google Maps 5.4.0 apk"를 인터넷으로 검색하여 버전을 다운로드했습니다. 나는 실제로 그것을 찾았지만 지금은 이것이 실제로 시장에서와 같은 버전인지 어떻게 알 수 있는지 궁금합니다.

변경되지 않았 음을 어떻게 확인할 수 있습니까? 어떤 방식 으로든 앱에 서명되어 있습니까? 서명을 확인하는 방법이 있습니까?


모바일에서 다음 페이지를 방문 m.google.com/maps하면 다운로드 링크 나 비슷한 정보가 제공됩니까?
Nicolás

@ Nicolás : 다운로드 할 수없는 시장으로 연결됩니다.
Nathan Fellman

구글에서 오는 것은 놀라운 일이 아닙니다. 그건 그렇고, 나는 당신의 원래 질문에 대답하지 않는다는 것을 알고 있지만 MapDroyd 를 테스트 습니까?
Nicolás

@ Nicolás : 저는하지 않았으며 실제로 일상 탐색에 Waze 를 사용 합니다. Google지도는 단지 예일뿐입니다. Google 도서는 Google Streetview의 또 다른 예입니다 (실제로는 Google 앱만으로도 문제가 발생하는 것처럼 보입니다 ...)
Nathan Fellman

1
"정품"이고 동일한 공급 업체에서 제공 한 두 번째 앱이있는 경우 두 키가 동일한 키 / ID를 사용하여 서명 된 경우 비교할 수 있습니다. android.stackexchange.com/a/208326/2241
Robert

답변:


71

휴대 전화에 해당 앱을 설치하는 합법성에 대한 논쟁을 피하면서 검증 문제는 내가 오랫동안 이해해야했던 질문이며, 누가 서명했는지 확인할 수있는 방법을 찾아 보라고했습니다. APK.

Android 앱은 일반적인 방식으로 .jar 파일로 서명됩니다 (.apk는 실제로는 특별한 .jar 인 특수한 .jar입니다). 그러나 알려진 것이 없으면 인증서의 진위 를 추적 하는 것이 쉽지 않을 수 있습니다. 비교하십시오. 그것은 기본적으로 전화 자체가하는 일입니다-이미 휴대 전화에있는 것과 같은 당사자가 주장하는 것이 있는지 확인합니다-전화는 알 수없는 서명자가있는 것을 설치하지 않고 단지 (오브젝트 대상 / 명확한 응용 프로그램) 새로운 것이 무언가 주장하는 것과 일치하지 않을 때 명백한 위조의 데이터.

jarsigner와 keytool이 필요합니다. 나는 이것이 SDK 자체가 아닌 안드로이드 SDK의 전제 조건 인 JDK에서 나온 것이라고 생각합니다.

먼저 .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 스토어의 공식 APK와 동일한 지 확인하는 방법이 있습니까?
브라이스

@Bryce 같은 질문이 있습니다. 답을 찾았습니까?
Kaizer Sozay

@Chris Stratton Google지도 APK를 기기에서 복사 할 수 있습니까? 그런 다음 말한대로 인증서를 확인할 수 있습니다.
Kaizer Sozay

또한 다음 애플리케이션을 사용하여 기기에서 APK를 추출 할 수 있습니다. play.google.com/store/apps/details?id=com.ext.ui&hl=ko Best, Paul. [
위원장 Firelord

4

원하는 것을 수행 하는 apksigner도구 build-tools가 있습니다. 로부터 문서 :

APK가 지원하는 모든 Android 플랫폼에서 APK 서명이 유효한 것으로 확인되는지 확인하십시오.

apksigner verify [options] app-name.apk

1

무료 VirusTotal.com 바이러스 검사기에 APK를 업로드 할 수도 있습니다 . 그것은 APK에 대한 고유 한 해시를 생성하고 다른 사람들이 이미 그것을 업로드하기 위해 그것을 업로드 한 경우 (아마도) APK가 유효하다는 생각을 갖게 될 것입니다.

이 서비스는 또한 60 개가 넘는 바이러스 스캐너로 APK를 스캔하고 이미 발견 된 바이러스와 비슷한 서명이 있다고 생각하는지 알려줍니다.


0

의심스러운 apk 파일의 인증서를 비교하려면 휴대 전화의 공식 Play Store에서 버전을 다운로드하고 컴퓨터에서 백업을 수행하고 백업 디렉토리로 이동하여 관련 apk 파일을 선택하고 동일한 검사를 수행하는 것이 좋습니다. com.google.android. * apk와 같은 기기 기본 애플리케이션에서 확인을 수행하여 Google 인증서를 볼 수도 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.