본문 바로가기
Android

APK 파일 디컴파일(Decompile) 하는 방법

by hiro1983 2015. 12. 1.

APK 파일을 소유하고 있으면 그 파일을 디컴파일 하여 그 App의 대략적인 구조와 리소스 등을 확인 할 수 있다.

APK 파일이 없다 하더라도 App이 설치된 휴대폰만 있으면 추출이 가능하다.

(이전 글 참조 APK 파일 추출하는 방법)


디컴파일을 하기 위해서는 아래 프로그램들이 필요하다.


1. ApkTool - 다운로드 : http://ibotpeaches.github.io/Apktool

2. Dex2Jar - 다운로드 : https://github.com/pxb1988/dex2jar

3. JD-GUI - 다운로드 : http://jd.benow.ca/


위의 다운로드 받은 프로그램들을 사용하기 편한(?) 곳에 폴더를 하나 만들어서 이동 후 압축을 풀어준다.


글쓴이는 디컴파일 폴더를 하나 만들어서 다 넣었다. 

(APK 폴더는 APK 모아두는 폴더는 따로 하나 만든 것이고..jad는 이번 글과는 상관 없는 프로그램 이다.)


1. ApkTool을 사용하여 리소드, XML 파일 추출하기.


준비된 APK 파일을 apktool 폴더 하위로 이동 시킨 후 cmd를 실행한다.



실행 후 위 그림과 같이 입력을 딱 해주면..같은 경로에 apk 파일명과 같은 폴더가 생성 된다.

위의 생성된 폴더에서는 JAVA 파일을 제외한 리소스, XML 파일 등이 확인이 가능하다.


2. Dex2Jar과 JD-GUI을 사용하여 JAVA 파일 보기


준비된 APK 파일의 확장자를 ZIP으로 변경한다.

압축을 풀어보면 classes.dex 란 파일이 존재하는데, 이 파일을 Dex2Jar 폴더 하위로 이동 시킨 후 cmd를 실행한다.



실행 후 위 그림과 같이 입력하면 같은 경로에 classes_dex2jar.jar 파일이 생성된다.

이 생성된 파일을 JD-GUI 폴더 하위로 이동 시킨다. 


JD-GUI 폴더로 들어가서 JD-GUI.exe를 실행한다. (커피 아이콘)

실행 후 이전에 준비한 jar파일을 이 프로그램에서 열면 끝!



난독화 된 코드는 보기가 힘들고...(당연히..) 난독화 되지 않은 코드들은 대략적으로 확인이 가능하다.