-->

dex2jar를 사용한 apk 디컴파일

PE 파일을 IDA와 같은 툴을 사용해 디컴파일하듯, apk 파일도 디컴파일을 할 수 있는 방법이 있는데 그 중 가장 무난히 많이 사용되는 방법이 dex2jar 툴을 사용하는 것이다. 이름 그대로 dex -> jar 로 변경해주는 툴인데 그전에 dex란 뭔지부터 간단히 살펴본다.

 

 

DEX(Dalvik Excutable)란

윈도우 실행파일이 PE파일인 것처럼, 안드로이드의 실행파일은 dex이다. d가 dalvik인 것에서 알 수 있듯이 안드로이드는 dex 파일을 달빅이라는 가상머신에서 구동시킨다. 달빅 가상머신은 모바일 기기에서 메모리를 적게 사용하면서 실행파일이 구동되도록 하는 최적회된 가상머신이라고 생각하면 된다. 참고로 이 달빅 가상머신은 OS에 하나가 있는 것이 아니라 구동되는 어플리케이션마다 생성이 되는 형태이다.

 

apk 개발을 위해 작성한 java 코드를 컴파일한 후 생긴 클래스 파일을 dx 툴로 변환하면 dex 파일이 생성된다. 그리고 dx 툴로 변환하는 과정에서 java의 바이트 코드가 달빅 바이트 코드로 변환된다. apk 파일 내부를 보면 아래와 같이 classes.dex 파일을 확인할 수 있다.

 

 

 

dex2jar를 사용한 apk 디컴파일

그렇다면 이제 dex 실행파일을 jar(자바 프로그램을 배포하기 위한 패키지 파일)로 디컴파일 한다는 것이 이해가 갈 것이다. IDA에서 헥스레이로 보는 것이 고수준언어로 보는 것이라 더 보기 쉽지만 일부 깨진다는 단점이 있는 것과 동일하게 java 코드로 디컴파일하는 것 또한 동일한 단점이 존재한다.

 

jar로 디컴파일 할 때 많이 쓰는 방식이 dex2jar툴을 사용하는 것이다. 아래의 링크에서 dex2jar과 JD-GUI를 다운받는다.


dex2jar 다운로드 링크

JD-GUI 다운로드 링크

 

 

dex2jar를 사용하기 위해선 인자값에 apk 파일이나 dex 파일만 넘겨주면 된다.

 

 

 

그럼 jex2jar 폴더 내부에 jar 파일이 생성되고 JD-GUI로 열면 아래와 같이 자바코드를 확인할 수 있다.

 

 

댓글

Designed by JB FACTORY