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

'Mobile' 카테고리의 다른 글

MultiDex Dynamic Debug(feat. JEB)  (0) 2020.05.18
Dynamic Code Loading in Android (feat.DexClassloader)  (3) 2020.05.08
ro.debuggable 변경을 통한 동적 디버깅  (2) 2019.09.23
IDA DEX,SO 동적디버깅  (0) 2019.09.23
DVIA (Binary Patching)  (0) 2019.09.03

+ Recent posts