스터디/Android+Java

Android APK Decomplie (2011.09.12)

Dalmangyi 2017. 10. 7.

apktool1.4.1.tar.bz2

dex2jar-0.0.7.11-SNAPSHOT.zip

jd-gui-0.3.3.windows.zip



APK파일 디컴파일 방법

 

소스코드를 APK파일로 만드는 과정을 컴파일, APK파일에서 소스코드로 변환하는 과정을 디컴파일이라고 합니다.

여기서 아셔야 될것은 디컴파일이라고 소스코드의 주석부분이라던지 static변수라던지 switch문 구조라던지 정확히 표현은 안되지만 API 함수를 사용한것을 정확히 판단할 수 있으며 대략적인 소스코드의 흐름을 아실 수 있습니다.

암호화된 XML파일은 완벽히 복구가 가능하며 이외에도 소스코드가 아닌 부분들에 대해선 완벽히 복구가 가능합니다.

 

기본적으로 apk파일은 zip파일에서 확장자 이름만 변경된 파일입니다.

그렇기에 확장자를 zip로 변경하신후 압축을 풀게 되면 내부에 간단한 image는 기본적으로 추출 가능합니다.

apk확장자를 zip로 바꾼 파일 내부에는 classes.dex 파일도 존재합니다.

 

프롬프트창 실행방법 : [윈도우-실행-cmd]  혹은  [윈도우-프로그램-보조프로그램-명령 프롬프트]

ApkTool, Dex2Jar, JD-GUI 파일 전부 첨부파일에 추가해 놓았습니다.

 

법적으로 문제가 될시에 해당 게시물은 조용히 내리겠습니다.

신고하시기 전에 저에게 게시물 법적 여부에 대해 쪽지나 메일을 주시면 타당한 이유에 한해 매우 협조적으로 따르겠습니다.

 

 

 

 


ApkTool - java파일 소스코드 이외에 모든 파일(xml,db,asset 등)을 추출 할 수 있게 해주는 툴

다운로드 주소 : http://code.google.com/p/android-apktool/downloads/list

파일 명을 보시면 어떠한 파일인지 감이 오실겁니다. 각 운영체제별 설치파일과 단순 압축파일이 존재합니다.

명령어는 당연히 프롬프트에서 이뤄집니다. 이외에 다른 명령어 프로그램도 가능합니다.

명령어 : apktool d <apk파일 절대경로+파일이름+확장자> out

명령어 예 : apktool d D:\com.test.file.apk out

 

 

 


 


Dex2Jar - class파일의 집합인 dex파일을 jar파일로 변환하게 도와주는 툴

다운로드 주소 : http://code.google.com/p/dex2jar/downloads/list

zip확장자로 변환된 apk파일을 압축 해제후 내부에 존재하는 classes.dex파일을 대상으로 합니다.

명령어는 당연 프롬프트에서 이뤄집니다. 이외에 다른 명령어 프로그램도 가능합니다.

명령어 :  dex2jar <classes.dex절대경로+파일이름+확장자>

명령어예 : dex2jar c:\classes.dex

  

 


 



JD-GUI - jar파일을 디컴파일하여 패키지주소와 함께 소스코드를 보여주는 툴

다운로드 주소 : http://java.decompiler.free.fr/?q=jdgui

dex2jar파일로 추출한 jar파일을 대상으로 합니다. 물론 다른 jar파일도 가능합니다.

명령어 : 는 존재하지 않습니다.

JD-GUI파일을 실행하여 [file]-[open]을 통하여 jar파일을 읽게 되면 내부에 존재하는 소스코드 들을 관찰 하실 수 있습니다. 만약 dex2jar과정에서 에러가 날 경우 정상적이지 않은 코드가 나타나게 됩니다.

[file]-[save all sources] 를 통해 jar파일 내부의 모든 소스코드를 패키지가 포함된 형태로 추출 가능합니다.

 

 

 

 

본문참고1 : http://blog.softwaregeeks.org

본문참고2 : http://blog.naver.com/man8408/110111707630

 

 


 


2011.12.22


여러가지 어플을 테스트해본 결과 최근 어플들에선 디컴파일로 인한 소스코드 공개를 꺼리기 위해서 smali코드를 변형하여 넣는것 같다.

참고 링크 : http://mygirl2.blog.me/40105689834 , http://vorcot.blog.me/40142515805






댓글