본문 바로가기

Android

Android에 설치된 앱이 Platform Key로 서명되었는지 확인하는 방법

결론

adb shell pm dump <앱의 package 이름> | grep KeySets

 

위와 같이 입력 시 결과가 아래와 같이 나오면 <...>에 입력한 앱은 Platform Key로 서명된 것입니다.


설치된 앱들의 package 이름 list 확인하는 방법

adb shell pm list packages

Windows에서 grep 명령 사용하는 방법

www.cygwin.com/

 

Cygwin

Cygwin Get that Linux feeling - on Windows This is the home of the Cygwin project What... ...is it? Cygwin is: a large collection of GNU and Open Source tools which provide functionality similar to a Linux distribution on Windows. a DLL (cygwin1.dll) which

www.cygwin.com

cygwin 설치하시면 됩니다.

원리

최초 단말 부팅 시, Android Package Manager는 (앱들 포함) 패키지들의 서명 정보를 확인합니다. 제일 처음 확인하는 대상들이 Platform Key로 서명된 패키지들인데 그래서 키셋 번호 1번을 부여받습니다. 이후 서명이 다른 패키지들이 확인될 때마다 키셋 번호는 증가합니다. 그래서 키셋 번호가 1번인 패키지들은 Platform Key로 서명된 패키지들입니다.

의미

Platform Key로 서명이 되었다는 것의 의미는 어찌보면 제조사가 인증하는 패키지라고 해석해도 될 것 같습니다. 그래서 여러 특수 지위를 누리게 되는데요.

예를 들면, 단말의 시스템 시간을 변경하기 위해서는 "android.permission.SET_TIME" 이라는 권한이 앱에 부여되어야 합니다. 그런데 이 권한은 아무한테나 부여되지 않고 다음과 같은 조건이 명시되어 있습니다.

cs.android.com/android/platform/superproject/+/android-11.0.0_r3:frameworks/base/core/res/AndroidManifest.xml;drc=0b1582784d797f2c66a67946be44d5aef05fa4ef;l=2656

    <!-- Allows applications to set the system time directly.
         <p>Not for use by third-party applications. -->
    <permission android:name="android.permission.SET_TIME"
        android:protectionLevel="signature|privileged" />

Platform Key로 서명되어 signature가 동일하거나 특정 파티션에 설치되는 특수한 앱들에만 SET_TIME 권한이 인가될 수 있다는 의미입니다. 그렇지 못한 앱들에는 앱에서 아무리 권한을 요청해도 Android System에서 권한을 인가해주지 않습니다.