본문 바로가기

IT/Security

안드로이드 apk 디컴파일(decompile) 하기

/* 
written by kaspy (kaspyx@gmail.com)
*/ 


안드로이드(android) 에서 사용되는 어플(apk)을 디컴파일(decompile) 하는 방법에 대해 다루어 보았습니다. 

안드로이드의 실행파일은 자바로 컴파일 되며, apk 확장자로 압축되어 바이트 코드로 배포 되기 때문에 이를 디컴파일 할수 있습니다.

기본 환경은 컴퓨터에 java가 설치되어 있어야 합니다.


jad_gui.zip

첨부 파일.zip



안드로이드 어플은 설치를 통해서 사용되며, 설치 전에 apk 확장자 형태로 배포 됩니다. 우선 제가 쓰고있는 안드로이드 어플 중 임의의 apk를 가지고 디컴파일을 해보겠습니다.




apk 파일을 내 컴퓨터의 임의의 디렉토리에 복사하고, 확장자만 zip형식으로 바꿔서 열면 압축된 내용과 형태를 아래와 같이 볼 수 있습니다.


 부한 파일 undx.jar, dexdump.exe, mgwz.dll을 다운받아서 classes.dex 가 위치 하는 곳에 아래와 같이 복사해주고, gen 이라는 빈 폴더를 하나 만들어 줍니다.




 그리고 위의 경로를 프롬프트 창을 열어서 아래와 같이 명령어를 입력해 줍니다.


java -DASDKLoc="E:\SHADOW\Work\CERT\basketrun_bin_20100511a" -jar undx.jar classes.dex




저기서 경로는 압축을 풀어준 경로입니다.

위와 같이 입력해주면 class 파일로 구성된 압축 파일 형태가 gen 폴더에 생성됩니다.





classes.dex.jar 의 압축을 풀어보면 자바로 컴파일된 class들을 내용을 볼수 있습니다.




첨부한 jad.exe로 클래스 파일을 열어보면 디컴파일 된 소스를 볼수 있습니다.