APK는 이 문서로 연결되며 대한민국의 프로게임단의 옛이름인 APK Prince에 대한 내용은 GOnGO Prince 문서 참고하십시오.
1. 개요
APK는 Android Application Package의 약자로[1], 안드로이드에서 프로그램 형태로 배포되는 형식의 확장자이다. 보통 안드로이드에서 APK 파일이 설치된다면 기본적으로 아래와 같이 데이터 파일과 APK 파일 위치가 복사된다.- /data/app[2]
- /data/data/<패키지명>[3]
- /storage/emulated/0/Android/data
- /storage/emulated/0/Android/obb[4]
APK 파일은 모두 실제 보이는 앱 이름과 다른 패키지 이름을 가지고 있다.
예 - com.google.android.gms
이 APK 파일은 iOS의 ipa 파일과 달리 Java 플랫폼에서 사용하는 JAR 포맷[5][6]을 그대로 이용하고 있어 어느 정도 디컴파일이 가능하기에 해킹이 많은 편. 또한 바이트코드 언어들은 대부분 원본 소스코드를 유추하기 상대적으로 쉬운 편이기도 하다. 그리고 어떤 경우에는 파일 다운로드 시간이 점점 늘어나는 경우도 있으니, 주의해야 한다.
2. 위험성
앱을 APK 파일로 직접 설치하는 일은 보안 관점에서 매우 위험하다. 구글이 검수한 뒤에 안전한 앱만 등록되는 플레이 스토어와 달리, 사용자의 스마트폰을 해킹하기 위해 만든 앱일 가능성도 있기 때문이다.몸캠 피싱, 스미싱 등 범죄를 저지를 때 APK파일을 다운받게 유도하여 피해자의 폰을 해킹하는 것은 물론이고, 유료 앱을 무료로 쓰게 해준다면서 유혹한 뒤 폰을 해킹하는 수법도 있다.
실제로 이스트시큐리티 보안동향보고서 2020년 9월호에 따르면 수사기관을 사칭한 스미싱 문자를 통해 기기 정보와 문자메시지 내용을 탈취하는 악성 앱이 유포됐다.
이러한 위험 때문에 Google은 기본적으로 Play Store 외에서 가져온 파일로 앱을 설치하는 것을 제한하고, 사용자 책임 하에 이를 설치할 수 있는 기능을 제공한다.
일부 스마트폰 제조사들은 APK 파일 설치 전 자체적으로 바이러스 검사를 수행한다.
2.1. 대처법
APK 파일로 앱을 설치할 때는, 다음 조건에 부합하는지 따져 보고 신중하게 설치해야 한다.-
꼭 공식 앱스토어가 아니라, APK 파일을 통해 다운받아야만 하는 앱인가?
웬만하면 앱을 깔 때는 APK 파일이 아니라, Google Play같은 공식 앱스토어를 통해 다운받는 게 좋다. 위에서도 말했지만 APK 파일 자체가 보안에 취약하다. -
이 APK 파일의 배포자를 믿을 수 있는가?
APK 파일의 배포자가 누군지도 중요하다. 예를 들어 신뢰할 수 있는 대기업의 홈페이지에서 APK 파일을 설치하는 것은 괜찮다. 그들은 이미 충분히 검증된 기업이기 때문이다. 그러나 모르는 사람이 보낸 문자메세지의 링크를 눌렀는데 APK 파일이 들어있다면, 그건 절대로 설치하면 안된다. 아마 그 앱은 100% 당신의 개인정보를 훔치기 위해 만든 악성 앱일 것이다. -
오픈 소스 앱인가?
오픈 소스라면 더욱 신뢰성이 올라간다. 이 앱에 채굴기나 개인정보 탈취 프로그램 등 이상한 걸 심어놓지 않았다고 증명하는 셈이기 때문이다.
2.2. 관련 기사
악성 앱으로부터 보호, '출처 알 수 없는 앱 설치' 제대로 차단하기모바일 해킹 유행한다는데, 어떻게 확인해야 할까?
3. AAB[7]로 세대교체
2021년 8월부터는 APK를 개선한 AAB 형식으로 올릴 것을 권고하고 있다. 단, AAB 파일은 기기에 직접 설치할 수 있는 파일이 아니라 Google Play를 통해 배포되는 형식이며, 실제 기기에 설치되는 과정에서 APK 파일로 변환된다.4. 관련 도구
- 안드로이드 스튜디오: APK 분석 기능이 존재한다.
- apkanalyzer: 안드로이드 SDK에 포함된 APK 디버깅 도구다.
- apktool: APK 리버스 엔지니어링 도구로, APK 파일의 리소스를 디컴파일하고 바이트코드를 분해하여 수정할 수 있도록 해 주며, 디컴파일된 APK를 다시 빌드해 준다.
- smali/baksmali: 위 apktool에 포함된 도구이며. APK 파일의 바이트코드를 smali 코드로 분해해 주고 다시 빌드해 준다.
- bundletool: AAB 파일을 빌드하고, AAB를 APK로 변환시키는 기능을 제공한다.
5. 관련 문서
[1]
또는,
Application
Package
[2]
실제 APK 파일이 위치하는 경로.
[3]
설치한 앱에서 생성하는 데이터 파일이 위치하는 경로. 참고로 /data/data는
루팅해야 접근할 수 있는 경로다.
[4]
앱을 설치할 때 추가 데이터 파일이 위치하는 경로.
[5]
ZIP 기반이라 일반 압축 프로그램으로도 간단히 풀린다.
[6]
피처폰에서도 사용한다.
[7]
안드로이드 앱 번들(Android App Bundle)의 약자.