• apk 추출 
  • apk 분석
  • apk 디컴파일
  • apk 리패키징
  • apk 디지털 서명
  • apk 실행

 

 

[apk 추출]

apk(Android Package Kit)는 Android OS에 앱을 배포하고, 설치하는데 이용되는 패키지 파일의 확장자이다. 앱에서 apk 파일을 추출하는 방법은 다양하지만 간단한 방법은 apk 파일 추출 기능이 있는 앱을 다운받아서 apk를 추출해 내는 것이다. 그리고 해당 apk를 pc로 옮기면 된다. apk 추출 방법은 간단하니 자세히 다루지 않겠다.

 

 

[apk 분석]

apk 파일 분석은 jadx-gui라는 apk 분석 디컴파일러를 사용하면 편하다. 이는 apk 파일을 로드시키면 자바코드로 볼 수 있는 gui 환경을 제공해 준다.(smali 코드도 볼 수 있다.) 

 

 

[apk 디컴파일]

apk 파일의 내용을 수정하기 위해서는 디컴파일을 진행한 후 smali 코드의 내용을 수정해야 한다. 따라서 apktool을 설치하여 디컴파일을 진행하면 된다.

 

cmd에서 실행시킬 apk 디컴파일 명령어는 다음과 같다.

apktool d 'apk 파일명'.apk

이 명령어를 실행하면 apk 파일을 디컴파일 시킨 폴더가 하나 생성된다.

 

 

[apk 리패키징]

디컴파일하여 내용 수정했다면 다시 apk 파일로 만드는 리패키징하는 과정이 필요하다.

 

cmd에서 실행시킬 apk 리패키징 명령어는 다음과 같다.

apktool b '디컴파일 폴더' -o '출력 apk 파일명'.apk

이 명령어를 실행하면 디컴파일 폴더를 리패키징시킨 apk 파일이 하나 생성된다.

 

 

[apk 디지털 서명]

리패키징된 apk 파일은 디지털 서명 없이 안드로이드에서 바로 실행이 불가능하다. 따라서 기본적인 Key를 생성해 주고 해당 Key를 apk에 서명해 주는 과정이 필요하다.

 

Key를 생성하는 명령어는 다음과 같다.(keytool을 설치해야 하나 자바를 설치하면 자동으로 깔림) 

keytool -genkey -v -keystore 'key 저장소명'.keystore -alias 'Key명' -keyalg '암호화 방식' -keysize '키사이즈'

이 명령어를 실행하면 Key가 저장된 Keystore가 하나가 생성된다.

 

이제 만든 Key로 apk에 서명해 주는 명령어는 다음과 같다.

jarsigner -verbose -sigalg '서명 알고리즘' -digestalg '암호화 방식' -keystore 'key 저장소명'.keystore '서명할 APK명'.apk '서명할 Key명'

이 명령어를 실행하면 안드로이드에서 해당 apk를 실행시킬 수 있다.

 

 

[apk 실행]

수정한 apk 파일을 usb로 pc와 연결된 안드로이드 기기에 끌어와 직접 설치할 수 있다. 

하지만 안드로이드 기기에 직접 설치하지 않아도 PC에서 안드로이드 앱을 실행시킬 수 있는 Nox 등의  에뮬레이터를 간편하게 이용할 수 있다.

 

추가적으로 ADB(Android Debug Bridge)라는 안드로이드 기기나 에뮬레이터와 통신이 가능한 쉘을 이용하여 로컬 pc에서 다음과 같은 작업들을 시행할 수 있다.(Nox 설치하면 ADB 자동으로 깔리며 추가적으로 환경변수 설정해야 함)

adb shell: 원격 쉘 실행
adb install: 앱 설치
adb shell am: 특정한 조건에 맞게 파일 실행 등
adb logcat: log 출력

 

+ Recent posts