Академический Документы
Профессиональный Документы
Культура Документы
5 августа 2015 г
Android Reverse-Engineering
DEX (Dalvik Executable)
Инструментарий для реверс-инжиниринга Android-приложений.
Немного о DEX (Dalvik Executable) формате
whoami
▪ Юрий Крутилин
▪ y.krutilin@gmail.com
▪ skype: krutilin
▪ https://ru.linkedin.com/in/krutilin
▪ http://habrahabr.ru/users/seod/
whoami
http://developer.android.com/tools/help/adb.html
Способы получения apk
>cd hello
>cordova build
Структура Android приложений
apk to zip
Структура Android приложений
assets не компилируемые
ресурсы.
Доступ из приложения через
файловую систему.
Структура Android приложений
META-INF
AndroidManifest.xml
resources.arsc
classes.dex
Dalvik
Dalvik opcodes:
http://pallergabor.uw.hu/androidblog/dalvik_opcodes.html
Dalvik
Dalvik
Dalvik
Dalvik opcodes:
http://pallergabor.uw.hu/androidblog/dalvik_opcodes.html
Dalvik
Структура Dex файлов
http://source.android.com/devices/tech/dalvik/dex-format.html
Dex особенности
▪ выполняется на регистровой виртуальной машине
▪ кодировка LEB128
Dex особенности
▪ MUTF-8
▪ Используется для кодирования строк в DEX формате
▪ Символы могут быть длинной в 1, 2 или 3 байта
▪ null байт '\u0000' закодирован в двух байтах в отличие от UTF-8 и всегда
является концом строки
▪ Дополнительные символы кодируются в виде пар char символов
(Supplementary characters).
Dex ограничения
«65К методов хватит всем» или как бороться с лимитом DEX методов в Android
http://habrahabr.ru/post/230665/
https://medium.com/@rotxed/dex-skys-the-limit-no-65k-methods-is-
28e6cb40cf71
Dex парсеры
Подпись
▪ META-INF
Инструментарий
aapt dump xmltree android-debug.apk AndroidManifest.xml>AndroidManifest.xml
Инструментарий
▪ AXMLPrinter https://code.google.com/p/android4me/
▪ Apktool - комплексный набор тулзов для разбора Android приложений
http://ibotpeaches.github.io/Apktool/
▪ Androidguard - набор тулзов на питоне для разботы с Android приложениями
https://github.com/androguard/androguard
▪ ApkAnalyser - набор тулзов для разбора Android приложений от Sony
https://github.com/sonyxperiadev/ApkAnalyser
Инструментарий
http://ibotpeaches.github.io/Apktool/
Инструментарий
▪ ApkAnalyser - набор тулзов для разбора Android приложений от Sony
Инструментарий
Инструментарий
Сырцы (Smali, Jar, Java)
▪ smali/baksmali https://code.google.com/p/smali/
▪ dexdump
▪ Dex2Jar https://github.com/pxb1988/dex2jar
▪ Jd-gui http://jd.benow.ca/
▪ JAD http://varaneckas.com/jad/
▪ Androidguard’s DAD https://github.com/androguard/androguard
▪ JEB https://www.pnfsoftware.com/
Инструментарий
▪ > java -jar baksmali-2.0.3.jar classes.dex
Инструментарий
▪ Подпись
▪ Для подписывания можно использовать keytool и jarsigner которые идет в
составе Java SDK
▪ Либо своя реализация, например, на C#
Зачем? Как применить?
▪ https://www.fortiguard.com/
▪ https://markfaction.wordpress.com/2012/07/15/stack-based-vs-register-based-virtual-machine-
architecture-and-the-dalvik-vm/
Вопросы
▪ Юрий Крутилин
▪ y.krutilin@gmail.com
▪ skype: krutilin
▪ https://ru.linkedin.com/in/krutilin
▪ http://habrahabr.ru/users/seod/