본문으로 바로가기

1. Apktool

apk파일을 분해, 결합시켜주는 툴. apk 파일은 apktool을 이용하여 분해(디컴파일)하고, 다시 결합(리패키징)시켜준다.

apk파일은 툴을 이용해 디컴파일하거나, 압축파일 풀듯 반디집등을 활용하여 분해할 수 있는데, 각각 결과값이 다르게 나온다. 참고.


1) apktool을 이용한 디컴파일 (옵션은 d, 디컴파일의 약자인 듯)

    • java -jar apktool.jar d '해당 apk'


2) apktool을 이용한 리패키징

  • java -jar apktool.jar b '대상 폴더' -o '새로만들 apk이름' (옵션은 b, 빌드의 약자인 듯)



2. dex2jar

1번에서 언급한대로, 디컴파일에는 두가지 방법이 있는데, dex2jar는 두번째 방법을 통해 얻은 classes.dex파일을 .jar 파일로 변환해준다.

1. apktool을 이용한 디컴파일

2. 압축프로그램을 이용한 압축해제방식

dex2jar는 이중 2번째 방식의 classes.dex 파일을 .jar 파일로 변환하여, 기존의 smali코드가 아닌 자바 코드로 내용을 볼 수 있게 해준다.


※ dex 파일 

컴파일 된 Android 애플리케이션 코드 파일. 

안드로이드 프로그램은 .dex (Dalvik Executable) 파일로 컴파일되며,이 파일은 다시 장치의 .apk 파일로 압축됩니다.
.dex 파일은 Java 프로그래밍 언어로 작성된 컴파일 된 응용 프로그램을 번역하여 Android에서 자동으로 만들 수 있습니다.

※ smali 코드

dalvik 가상머신에서 실행되기 전의 dex 바이트 코드를 가진 .smali 파일의 코드를 말함. 
Dalvik 바이트 코드는 Oracle JVM 바이트 코드와 마찬가지로 이론적 인 프로세서의 기계 코드 명령어입니다.
컴파일 프로세스는 .class 파일과 모든 .jar 라이브러리를 Dalvik 바이트 코드가 포함 된 단일 classes.dex 파일로 변환해야 합니다.
dx 명령은 모든 .class 및 .jar 파일을 Dalvik 바이트 코드 형식으로 작성된 단일 classes.dex 파일로 결합합니다.
이제 .class 및 .jar 파일을 .dex 파일로 변환하는 것을 Dex Compilation이라고하며, 그렇게 얻어진 파일을 Dex 파일이라고 합니다.

출처 : https://code.i-harness.com/ko/q/764330



1) dex2jar를 이용한 .dex파일 -> .jar 파일 변환

  • dex2jar.bat '해당 dex파일'


3. jd-gui, jadx-gui

jd-gui : dex2jar를 이용하여 만든 .jar파일을 안드로이드 스튜디오에서 어플 만들듯이 java코드로 볼 수 있게 해주는 툴

jadx-gui : apk파일 자체를 java코드로 볼 수 있게 해주는 툴

jadx-gui : 별도의 실행방법이 필요 없이 GUI로 바로 실행할 수 있음


4. signapk

apktool등을 활용하여 리패키징한 apk파일을 인증서로 서명해주는 툴. 

  • java -jar signapk.jar testkey.x509.pem testkey.pk8 '서명하려는 apk' '결과 apk'


5. proxydroid

안드로이드 가상머신에서 프록시를 사용하는 툴. Burp suite와의 연동을 통해 어플에서 나가는 패킷을 잡아 확인할 수 있게 해준다.

가상플레이어 루팅 설정을 하고, HOST : 호스트 OS의 IP, 포트는 버프로 잡을 포트를 설정한다.