Mobile

odex to dex

TaeSun1114 2020. 5. 8. 15:57

what is odex file?

- Android에서 앱 설치 시점에 컴파일하여 실행을 위한 최적화된 파일로 변환하며, 현재 단말기에서 최적화를 위해 변환되어 저장되는 파일

 

안드로이드 분석 시, apk 내 dex파일이 없는 앱이 존재하는데 해당 앱에는 dex 파일 대신 odex파일을 통해 앱을 실행시킵니다.

odex파일의 경우 안드로이드에서 자체적으로 앱 설치 시 컴파일 되는 파일이므로 리눅스 실행파일 헤더를 가지게 되며, 이를 dex파일로 변환해줘야 기존의 디컴파일 툴을 통해 원본 소스코드 확인이 가능합니다.

 

odex to dex

odex 파일 변환을 위해서는 baksmali/smali.jar가 필요하며 아래 주소를 통해 다운받을 수 있습니다.

 

www.bitbucket.org/JesusFreke/smali/downloads/

 

JesusFreke / smali / Downloads — Bitbucket

 

bitbucket.org

baksmali / smali.jar 다운로드 후 변환하고자 하는 odex파일을 같은 디렉토리에 위치 시킨 후 다음 명령어를 입력합니다.

java -jar baksmali.jar d <변환하고자 하는 odex파일 및 경로> -o <결과값이 저장될 폴더명>

 

명령어를 실행하면 아래와 같이 odex파일에서 smali 파일을 추출합니다

smali.jar를 통해 획득한 smali코드를 dex파일로 변환합니다.

java -jar smali.jar a <결과값이 저장된 폴더명> -o classes.dex

명령어를 실행하면 classes.dex파일을 획득할 수 있으며, jadx/jd-gui와 같은 툴을 통해 원본 소스코드 확인이 가능합니다.

 

참고

odex : www.howlling.tistory.com/55