상세 컨텐츠

본문 제목

Apktool 설치, Apktool 이용한 디컴파일(Decompile), 리컴파일(Recompile)

REVERSING/Android

by koharin 2021. 3. 26. 00:39

본문

728x90
반응형

Apktool 설치 방법

Apktool 설치 링크

자신의 운영체제에 맞게 다운로드를 진행한다.

  1. Download Windows wrapper script (우클릭해서 apktool.bat 이름으로 저장한다.)
  2. Download apktool-2 (find newest here)
  3. 2단계에서 다운받은 jar파일을 apktool.jar으로 이름을 바꾼다.
  4. apktool.jar, apktool.bat 파일을 Windows 디렉토리로 옮긴다. (C://Windows)
  5. cmd 창에서 apktool 으로 제대로 실행되는지 확인한다.

 

Decompile

unzip UnCrackable-Level1.apk

apk 파일은 ZIP 파일 포맷으로, unzip으로 압축해제를 할 수 있다. apk 파일이 위치한 경로에 압축해제한 파일들이 위치한다.

META-INF은 서명 파일, 파일 해시와 같이 출처, 무결성 확인 위한 인증서가 있다.

classes.dex는 컴파일된 자바 클래스로, Dalvik VM이 읽을 수 있는 실행 코드 파일이다.resources.arsc는 컴파일된 리소스이다.

하지만 AndroidManifest.xml을 보면 읽을 수 없다.

 

Apktool의 디컴파일 기능을 이용해보자.

apktool d UnCrackable-Level1.apk

-o 옵션을 주면 압축해제하는 소스 파일 경로를 지정할 수 있다.

압축해제 후 위의 폴더가 생성된 것을 확인할 수 있었다.

들어가보면, smali, AndroidManifest.xml이 눈에 띈다.

res/ 는 이미지 등과 같은 컴파일 되지 않은 리소스가 들어있다.

apktool을 이용해서 디컴파일한 결과, AndroidManifest.xml을 읽을 수 있다.

AndroidManifest.xml은 안드로이드 명세서로, 권한과 선언 등을 확인할 수 있다.

 

Dalvik VM은 dex 포맷의 바이트코드를 해석해 Android Application을 실행한다.

이 dex 바이트 코드를 human-readable 하게 변환한 것이 Smali이다.

어셈블리 언어와 유사하다고 볼 수 있다.

이렇게 apktool을 이용해서 디컴파일(d 옵션)하는 것으로 smali를 얻을 수 있다.

 

Recompile

apktool b UnCrackable-Level1.apk

얻은 smali 코드를 수정 후 apktool로 재컴파일하여 apk를 생성할 수 있다.

728x90
반응형

관련글 더보기