안드로이드는 USB 디버깅 모드가 활성화 되어 있으면, 설치된 앱의 apk 파일을 추출하는 것이 가능하다.

 

안드로이드 USB 디버깅 활성화 방법은 이전 포스팅에서 설명하였다.
USB 디버깅 모드 설정 : 2017/05/02 - [Android] - 안드로이드 USB 디버깅 모드 설정

 

앱을 추출하기 위해서, 이전 포스팅에서 예를 들었던 Notepad for Android 앱을 추출하는 것을 예시로 설명한다.
Notepad for Android : https://play.google.com/store/apps/details?id=com.blogspot.logpedia.note2

 

안드로이드 앱을 설치하게 되면 기본 경로는 /data/app ​디렉토리에 apk 원본파일을 다운받아 저장한다.
저장되는 파일명은 해당 apk의 AndroidManifest.xml에 등록된 Package명-1.apk로 저장하게 되며, 이를 이용하여 저장되는 디렉토리와 해당 apk파일명에 대해 유추가 가능하다.

 

 

먼저 apk를 추출하기 전, 먼저 자신의 안드로이드 버전을 확인해야 한다.
안드로이드가 4,x에서 5.x로 넘어가면서부터 설치된 apk가 저장되는 경로가 바뀌어졌으며, 해당 경로를 직접적으로 확인하기 위해서는 아래의 그림처럼 루팅(Rooting)을 해야 확인 가능하다.

 

 

4.x 이하 버전에서는 다음과 같이 루트 권한을 가진 상태에서 경로를 확인해보면 설치된 앱의 apk가 /data/app ​디렉토리에서 앱의 ​Package명-1.apk 형태로 저장이 되어 있는 것을 확인할 수 있다.

따라서, AndroidManifest.xml를 분석하여 Package명을 알 수 있으면 4.x 이하 버전에서는 이와 같은 경로로 설치된 앱에 대하여 저장 경로가 유추가 가능하고, 이를 바탕으로 adb 명령어를 사용하여 다음 아래 그림과 같이 루트 권한 없이도 해당 앱을 추출하는 것을 확인할 수 있다.

 

 

4.x 이하 버전과는 다르게 5.x 버전 이후에서는 아래 그림처럼 apk가 저장되는 경로가 /data/app/Package-1 ​디렉토리로 변경되고, 해당 디랙토리 내의 base.apk ​형태로 앱이 저장되도록 변경되었다.

 

 

앞서, 설명한 것과 마찬가지로 adb 명령어를 이용하면, 루트권한 없이도 앱 추출이 가능하다.

 

 

 

+ Recent posts