본문 바로가기
안드로이드

Decompile - 디컴파일

by 아카이sun 2016. 2. 10.

Decompile을 하는 이유는 간단하다.  소스를 보기 위해서....


apk파일을 열어보면 xml은 깨져있고 java파일은 보이지도 않는다.

소스를 보기 위해서는 어떻게 해야할까?

알고있는 몇가지를 포스팅해본다.



- dex2jar


https://github.com/pxb1988/dex2jar

실행파일을 미러사이트에서 받으면 된다.




압축을 풀면 위와 같은 파일들을 볼 수 있다.


다음으로 apk에서 classes.dex파일을 추출하여 위 폴더에다 넣는다.




해당 폴더의 경로에서 d2j-dex2jar.bat classes.dex 를 입력하면 dex파일을 jar파일로 변환시켜준다.



변환된 jar파일의 압축을 풀면 java파일을 볼수가 있다.



- smali2java


dex2jar에 GUI까지 더해진 것이라 생각하면 된다.

단지 apk파일을 오픈하는 것만으로 java파일을 볼 수 있다.





- apk tool


http://ibotpeaches.github.io/Apktool/


파일을 다운받고 압축을 푼뒤 apk도 같은 폴더에 이동시킨다.

해당 위치에서 java -jar apktool.jar d [파일명].apk 를 입력하면 된다.



apk tool은 java파일을 볼 수가 없다. 

apk tool은 xml등 리소스를 보기 위함이다.




해당 레이아웃을 어떻게 조정했는지 어떤 애니메이션을 사용했는지를 참고하는데 유용할 것이다.




이 외에도 decompile 툴이 존재하지만 대략적으로 많이 사용하는 방법을 올려보았다.


요즘은 proguard 등 코드 난독화 및 압축을 하기 때문에 소스 보기가 쉽지는 않다.




댓글