본문 바로가기

Linux

android decompile 디컴파일

안드로이드 .apk 디컴파일 (.java추출) 안드로이드

2011/07/12 00:36

복사 http://blog.naver.com/small_240/10113237506

전용뷰어 보기

첨부파일 (3)

1. apk파일을 준비한다. (스마트폰 ASTRO 파일관리자 등으로 앱을 백업받으면 apk파일로 저장된다)

스마트폰에 설치되어 있는 앱을 사용할 경우 ASTRO파일관리자 등으로 앱을 백업받으면 apk파일로 저장되니 백업 폴더에서 가져오면 되고, 개발중인 앱은 이클립스 워크스페이스의 프로젝트 폴더의 bin폴더 안에 apk파일이 있다.

 

apk파일 압축 풀기

2. apk파일의 확장자를 .apk에서 .zip으로 변경한 뒤 압축을 푼다.

압축을 푼 폴더의 내용은 다음과 같다.

 

3. 시작-실행-cmd로 명령창을 띄운 뒤 압축을 푼 폴더로 이동한다. (탐색기에서 폴더 경로를 복사하고 cd 붙여넣기(마우스 오른쪽 클릭)하면 편하다)

 

manifest파일 생성

4. 첨부된 AXMLPrinter2.jar 파일을 압축을 푼 폴더에 복사한다.

5. cmd창에 다음과 같은 명령어를 입력한다.

java -jar AXMLPrinter2.jar AndroidManifest.xml > Manifest.xml

실행결과: 해당 폴더에 Manifest.xml파일이 생긴다.

 

classes.dex -> classes.dex.dex2jar.jar

6.첨부된 dex2jar-0.0.7.10-snapshot 파일을 받아 압축을 해제한다.

 

7.압축을 푼 폴더 내의 dex2jar.bat파일을 메모장 등으로 열어 off를 on으로 편집한다.

 

8. dex2jar-...폴더의 내용을 통째로 카피하여 아까 apk파일의 압축을 푼 폴더로 복사한다(아니면 classes.dex파일만 dex2jar-...로 카피하여 이곳에서 디컴파일하여도 된다)

 

9.cmd창에서 다음 명령어를 입력한다.

dex2jar.bat classes.dex

 

실행화면

 

폴더에 classes.dex.dex2jar.jar파일이 생성되었다.

 

classes.dex.dex2jar.jar -> .java

10.첨부된 jd-gui-0.3.3.windows을 다운받아 압축을 풀고 jd-gui.exe를 실행시켜 위에서 생성된 파일을 open한다.

File-Open File-classes.dex.dex2jar파일경로 입력

 

11.File-Save All Sources-저장

 

해당 폴더에 classes.dex.dex2jar.src.zip파일이 생긴다.

 

이 파일의 압축을 풀면 java파일을 볼 수 있다.

 

-------------------------------------------------------------------------------------------

출처 : http://variousapp.egloos.com/1381524 

-------------------------------------------------------------------------------------------

 

원본 파일과의 비교

원본 manifest

 

디컴파일된 manifest

 

원본 소스폴더

 

디컴파일된 소스들

 

원본 java파일. 이게 돌아갔었는지도 기억이 안 나니 내용에 신경쓰지 말자.

 

디컴파일된 java파일.

 

친절하게 DB파일까지 생성... 어째 원본보다 더 구조적인듯??

 

이상!