APK를 설치하기 전에 Android 앱 권한을 보는 방법

A smartphone showing a list of app permissions with a magnifying glass

Google Play 스토어에서 앱을 설치하면 Android에서는 앱이 액세스할 수 있는 항목에 대한 간략한 요약을 표시합니다. Play가 아닌 소스에서 APK를 사이드로드하면 매니페스트를 직접 읽지 않는 한 그러한 안전망이 없습니다. "배경화면 앱에 SMS와 마이크 액세스가 꼭 필요할까요?"는 이 가이드가 답변하는 데 도움이 되는 질문과 정확히 같습니다.

다음은 익숙하지 않은 APK를 분류할 때 우리 팀에서 사용하는 것과 동일한 워크플로입니다. APK를 열고, uses-permission 항목을 읽고, 보호 수준을 디코딩하고, 라고 앱에 필요한 앱과 해당 카테고리에서 일반적으로 필요한 앱을 비교합니다. 당사의 온라인 APK 정보 도구는 바이너리 XML 디코딩을 수행하므로 전체 프로세스에는 약 10초가 소요됩니다.

독서 시간: ~9분. 필요한 도구: 브라우저; 선택적으로 apksigner 그리고 aapt2 터미널에서 동일한 검사를 수행하려는 경우 Android SDK에서. 마지막에 할 수 있는 일은 다음과 같습니다. APK의 전체 권한 목록을 읽고, 거의 항상 문제를 나타내는 4~5개의 '영향력이 높은' 요청을 찾아낸 다음, 설치 후가 아니라 설치 전에 설치할지 여부를 결정하세요.

권한 감사를 왜 귀찮게 하나요?

악의적인 개발자는 인기 있는 무료 앱을 가져와 변경하고 타사 사이트에 다시 출시합니다. 앱이 정상적으로 보이고 작동할 수 있지만 숨겨진 코드는 연락처 목록을 복사하거나 배경 오디오를 녹음할 수 있습니다. 권한 사전 설치를 보면 "권한 변동"의 위험 신호를 발견할 수 있습니다.

APK 파일을 감사하는 방법(온라인)

APK 정보 도구는 브라우저에서 파일의 매니페스트를 완전히 읽습니다. 파일은 서버에 업로드되지 않으며 코드도 실행되지 않습니다. 사용 방법은 다음과 같습니다.

과정:

  1. APK 정보 페이지로 이동합니다.
  2. .apk 파일을 선택하세요.
  3. 분석이 완료될 때까지 기다립니다(보통 5초).
  4. 권한 섹션까지 아래로 스크롤합니다.
  5. READ_SMS, PROCESS_OUTGOING_CALLS 또는 ACCESS_FINE_LOCATION와 같은 고위험 플래그를 찾으세요.

허가 위험 신호 목록

계산기 또는 손전등 앱이 READ_CONTACTS 또는 RECORD_AUDIO를 요청하는 경우 즉시 파일을 삭제하세요. 이러한 앱이 해당 데이터를 보유할 정당한 이유는 없습니다.

Android 권한 수준 이해

모든 권한이 동일하게 생성되는 것은 아닙니다. Android는 이를 세 가지 수준으로 분류합니다.

수동 방법(ZIP 뷰어 사용)

기술적인 능력이 있다면 권한을 직접 감사할 수 있습니다.

  1. app.apk의 이름을 app.zip로 바꾸고 엽니다.
  2. AndroidManifest.xml를 찾으세요. (참고: 이진 형식이므로 텍스트 편집기에서 횡설수설처럼 보입니다.)
  3. AXML프린터와 같은 도구를 사용하여 읽을 수 있는 텍스트로 변환하세요.
  4. <uses-permission>로 시작하는 태그를 검색하세요.

권장 사항: 이를 즉시 디코딩하는 온라인 도구를 사용하는 것이 훨씬 빠릅니다.

지금 앱을 감사하세요

앱이 요구하는 것이 무엇인지 정확히 알아보세요. 비밀도 없고 위험도 없습니다.

APK 권한 확인

AndroidManifest.xml에 실제로 저장되는 내용

매니페스트는 앱이 선언하는 모든 권한, 구성 요소 및 기능에 대한 정보의 소스입니다. APK 내부에는 파일이 소스 코드에서 보는 일반 텍스트가 아닌 바이너리 XML 형식이므로 일반 텍스트 편집기로 읽을 수 없습니다. 우리의 APK 정보 도구는 바이너리 XML을 디코딩하고 관련 태그를 표시합니다. 가장 중요한 것들은 다음과 같습니다:

권한 보호 수준: 치트 시트

Android는 모든 권한에 "보호 수준"을 할당합니다. 요청이 어느 수준에 속하는지 알면 OS가 해당 요청을 얼마나 심각하게 처리할지 알 수 있습니다.

보호 수준 사용자 경험 예
정상 설치 시 자동으로 부여됩니다. 프롬프트가 없습니다. 인터넷, 진동, ACCESS_NETWORK_STATE, WAKE_LOCK
위험한 기능이 처음 사용될 때 런타임 프롬프트가 표시됩니다. 설정에서 취소할 수 있습니다. 카메라, RECORD_AUDIO, READ_CONTACTS, ACCESS_FINE_LOCATION
서명 부여 앱 또는 OS와 동일한 인증서로 서명된 앱에만 부여됩니다. BIND_VPN_SERVICE, INSTALL_PACKAGES(시스템 전용)
서명|특권 시스템 이미지의 priv-app 디렉터리에 사전 설치된 앱에만 사용할 수 있습니다. MANAGE_USERS, READ_LOGS (사용자 및 로그 관리)
앱/역할 활성화하려면 별도의 설정 흐름이 필요합니다. SYSTEM_ALERT_WINDOW, BIND_ACCESSIBILITY_SERVICE, MANAGE_EXTERNAL_STORAGE (특수 시스템 권한)

"숨겨진" 권한이 실제로 의미하는 것

일반적인 오해는 일부 권한이 비밀이라고 생각하는 것입니다. 그렇지 않습니다. 앱이 사용할 수 있는 모든 권한은 AndroidManifest.xml에 선언되어야 하며 OS는 여기에 나열되지 않은 권한 부여를 거부합니다. 사람들이 일반적으로 "숨겨진"이란 의미는 다음 두 가지 중 하나입니다.

어느 쪽이든 대답은 동일합니다. 매니페스트를 읽고 Play 스토어 설명 자체를 신뢰하지 마십시오.

실제 사례: 실제 APK 감사

다운로드 폴더에 example.apk가 있다고 가정합니다. 정확한 작업 흐름은 다음과 같습니다.

  1. 브라우저에서 APK 정보 도구를 엽니다.
  2. 업로드 영역에 APK를 놓습니다. 처리는 로컬에서 이루어집니다. 파일이 장치를 떠나지 않습니다.
  3. 권한 섹션을 읽어보세요. 각 항목에는 상수 이름(android.permission.READ_CONTACTS과 그것이 허용하는 것에 대한 일반 언어 설명이 표시됩니다).
  4. 목록을 앱 카테고리와 비교하세요. 대략적으로 다음을 기대합니다.
    • 카메라 앱: CAMERA, RECORD_AUDIO(비디오용), STORAGE/MEDIA 쓰기
    • 메시징 앱: INTERNET, READ_CONTACTS, SEND_SMS(SMS 기반인 경우에만), RECORD_AUDIO(음성 메모용), CAMERA(사진 전송용)
    • 게임: 인터넷, 때때로 RECORD_AUDIO(게임 내 음성 채팅용), 결제 관련 권한; 그 외에는 거의 없음
    • 계산기, 손전등, 날씨: INTERNET(광고용), ACCESS_NETWORK_STATE, 가능하면 LOCATION(날씨만). 그 이상은 의심스럽습니다. 유틸리티 앱
  5. 목록에 있는 항목이 해당 범주에 맞지 않으면 설치하지 마세요. 계산기에 SMS 액세스가 필요한 이유는 없습니다.

파일이 APK, XAPK(내부 기본 APK를 읽음) 또는 APKS 번들(각 분할의 매니페스트를 읽음)인지 여부에 관계없이 동일한 논리가 적용됩니다.

명령줄에서 수행

터미널 경로를 선호하는 경우 Android SDK는 APK의 매니페스트를 일반 XML로 덤프하는 aapt2를 제공합니다.

aapt2 dump badging example.apk | grep "uses-permission"

또는 apksigner를 사용하여 동시에 서명 인증서를 확인합니다.

apksigner verify --print-certs example.apk

브라우저 도구는 단일 파일을 검사하기 위해 SDK를 설치하지 않는 사용자를 위해 동일한 작업을 수행합니다.

자주 묻는 질문(FAQ)

APK 설치 후 권한을 거부할 수 있나요?

예. Android 6.0 이상에서는 설정 > 앱 > [앱 이름] > 권한로 이동하여 개별 위험한 권한을 켜거나 끌 수 있습니다.

XAPK 파일에는 다른 권한이 있습니까?

XAPK에는 하나 이상의 APK가 포함되어 있습니다. 내부의 각 APK에는 자체 매니페스트가 있습니다. 우리 도구는 번들 내의 메인 APK를 분석하여 관련 권한을 보여줍니다.

모든 앱에서 "네트워크 액세스"를 요청하는 이유는 무엇입니까?

거의 모든 앱에는 분석, 버그 보고 또는 광고를 위해 인터넷 액세스가 필요합니다. 이는 일반적이지만 훔친 데이터가 해커의 서버로 전송되는 방식이기도 합니다.

설치를 탭하기 전에 매니페스트 권한 검사

눈에 보이지 않는 것을 판단할 수는 없습니다. 사이드로드하기 전에 APK 권한 보기에 10초를 투자하는 것은 앱이 도달할 수 있는 대상을 아는 것과 단순히 작동하기를 바라는 것의 차이입니다. 먼저 목록을 읽고 두 번째로 설치하십시오.

Mst Shaefale가 설계하고 문서화함 수석 개발자 및 Android 패키지 설계자 • Android 12~15에서 검증됨

Mst Shaefale은 xapktoapk.com에서 클라이언트측 XAPK/APKS 합병, 바이너리 매니페스트 파서 및 APK v1+v2 서명 도구를 유지 관리합니다. 오래된 명령이나 OS 변경 사항을 발견하셨나요? 편집 메모를 보내세요.