what is odex file?
- Android에서 앱 설치 시점에 컴파일하여 실행을 위한 최적화된 파일로 변환하며, 현재 단말기에서 최적화를 위해 변환되어 저장되는 파일
안드로이드 분석 시, apk 내 dex파일이 없는 앱이 존재하는데 해당 앱에는 dex 파일 대신 odex파일을 통해 앱을 실행시킵니다.
odex파일의 경우 안드로이드에서 자체적으로 앱 설치 시 컴파일 되는 파일이므로 리눅스 실행파일 헤더를 가지게 되며, 이를 dex파일로 변환해줘야 기존의 디컴파일 툴을 통해 원본 소스코드 확인이 가능합니다.
odex to dex
odex 파일 변환을 위해서는 baksmali/smali.jar가 필요하며 아래 주소를 통해 다운받을 수 있습니다.
www.bitbucket.org/JesusFreke/smali/downloads/
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 |