본문 바로가기
프로그래밍 놀이터/안드로이드, Java

[android] decompile ( 디컴파일 ) 하는 방법

by 돼지왕 왕돼지 2012. 11. 27.
반응형

decompile ( 디컴파일 ) 하는 방법

1. apktools

http://code.google.com/p/android-apktool/downloads/list
 
- 이 녀석은 apk 로부터 resource 를 추출할 떄 쓰이는 툴이다.

- apktool-install-windows-r04-brut1.tar.bz2 파일을 다운받아, 압축해제.




2. dex2jar


- 이 녀석은 dex 로부터 jar 를 생성하여, 최종적으로 소스코드를 볼 수 있도록 해주는 툴.

- dex2jar-0.0.9.11.zip 파일을 다운받아, 압축 풀기




3. jdgui


- dex2jar 로 생성한 jar 파일을 보는 viewer 이다. 이 녀석이 있어야 소스코드를 편리하게 볼 수 있다.

- jd-gui-0.3.5.windows.zip 파일을 다운받아, 압축해제






4. 1차 디컴파일 (resource 추출)

- resource 들을 추출하는 과정이다.

apktool d [apkfile] out


- out 이라는 폴더에 resource 파일들이 압축해제되어 나온다. xml 들과 이미지 파일등 안드로이드의 res 안에 들어있는 내용들이 쭉~ 나온다.






5. 2차 디컴파일 ( 소스코드 추출 )

apk 파일의 확장자 zip 으로 바꾼 후 압축을 풀어, dex 파일을 추출해낸다.

dex2jar classes.dex


- 위의 명령어를 실행하면 jar 파일이 나온다.

 







6. jdgui 를 이용하여 소스코드 보기

- jdgui 를 실행하고, 5. 과정을 통해 생성한 output.jar 파일을 jdgui 창에 끌어다 놓으면 소스를 볼 수 있다.

 


- 요즘은 proguard 를 적용하는 소스들이 많이 늘어나는 추세이기 때문에 제대로 된 소스를 보는 것은 어렵다. 하지만, 프로가드는 "난독화" 이지 "암호화" 가 아니기에 보기 어렵지만, 어떤 구현에 대한 아이디어를 얻기는 쉽다. 도전하라 디컴파일링!!









반응형

댓글