Dex


Dex

Dex는 Android에서 사용되는 파일로 Windows의 PE 파일과 같은 존재입니다. Dex는 Dalvik Executable을 줄여놓은 것으로 Dalvik Virtual Machine에서 동작합니다.

Dex의 Signature는 64 65 78 0a 30 33 35 00(dex\n035) 로 시작합니다.

k3y6reak:SoundMeter k3y6reak$ ls
AndroidManifest.xml	classes.dex		resources.arsc
META-INF		res
k3y6reak:SoundMeter k3y6reak$ hexdump -C classes.dex | more
00000000  64 65 78 0a 30 33 35 00  e2 50 cf a8 1b 24 b9 ce  |dex.035..P...$..|

unzip으로 추출한 classes.dex 파일을 분석해야 하는데 이때 사용하는 툴이 dex2jar가 있습니다.

dex2jar에서 해당 파일을 다운로드 받습니다.

압축을 해제한 후 Ubuntu에서 사용하기 때문에 d2j-dex2jar.sh를 이용해 jar 파일을 추출합니다.

root@ubuntu:~/dex2jar# ls
d2j-baksmali.bat   d2j-dex-recompute-checksum.bat  d2j-jar2jasmin.bat  d2j-std-apk.bat
d2j-baksmali.sh    d2j-dex-recompute-checksum.sh   d2j-jar2jasmin.sh   d2j-std-apk.sh
d2j-dex2jar.bat    d2j_invoke.bat                  d2j-jasmin2jar.bat  lib
d2j-dex2jar.sh     d2j_invoke.sh                   d2j-jasmin2jar.sh   SoundMeter.apk
d2j-dex2smali.bat  d2j-jar2dex.bat                 d2j-smali.bat
d2j-dex2smali.sh   d2j-jar2dex.sh                  d2j-smali.sh
root@ubuntu:~/dex2jar# ./d2j-dex2jar.sh SoundMeter.apk
dex2jar SoundMeter.apk -> ./SoundMeter-dex2jar.jar
root@ubuntu:~/dex2jar# ls
d2j-baksmali.bat   d2j-dex-recompute-checksum.bat  d2j-jar2jasmin.bat  d2j-std-apk.bat
d2j-baksmali.sh    d2j-dex-recompute-checksum.sh   d2j-jar2jasmin.sh   d2j-std-apk.sh
d2j-dex2jar.bat    d2j_invoke.bat                  d2j-jasmin2jar.bat  lib
d2j-dex2jar.sh     d2j_invoke.sh                   d2j-jasmin2jar.sh   SoundMeter.apk
d2j-dex2smali.bat  d2j-jar2dex.bat                 d2j-smali.bat       SoundMeter-dex2jar.jar
d2j-dex2smali.sh   d2j-jar2dex.sh                  d2j-smali.sh

SoundMeter-dex2jar.jar파일이 추출된 것을 볼 수 있습니다. 이제 jar 파일을 다시 Java Decompiler를 이용해 자바코드로 변환합니다.

JD-GUI에서 운영체제에 맞는 파일을 받아 실행합니다. jar 파일을 받은경우 java -jar jd-gui-1.4.0.jar 로 실행하면 됩니다.

jd_gui

실행 후 해당 apk를 드래그 앤 드롭으로 넣어주면 자동으로 분석을 해줍니다.

또 다른 방법으로는 010 Editor를 사용하는 방법입니다. 010Editor에서 다운로드 받을 수 있습니다. 010 Editor는 Template을 이용해 파일의 구조를 분석할 수 있습니다.

Templates_Github에서 여러 종류의 템플릿을 받을 수 있으며 여기서 사용할 파일은 DEXTemplate.bt이므로 이 파일을 받아주면 됩니다.

classes.dex파일을 010 Editor에 올리고 다운로드 받은 Dex template을 실행하면 됩니다. 상단의 메뉴에서 Templates - Open Template - DexTemplate.bt - Run Template를 선택합니다.

Github에서 받은 파일이 에러 간다면 Templates_sweetscape에서 받아서 실행해보세요.

editor




© 2017. by k3y6reak

Powered by k3y6reak