Продолжение темы реверса dex файлов.
Напомню, что dex файл содержит скомпилированные классы андроид приложения. В ранних версиях андроида, код в dex исполнялся на Dalvik. В современных версиях, вместо этого используется ART (
https://source.android.com/devices/tech/dalvik). Эта рантайм система более совершенна, в отличии от JIT, ART добавляет фичу AOT. AOT (Ahead-Of-Time) - фича, которая прекомпилирует куски кода приложения, для дальнейшего исполнения. Делает это она, с помощью утилиты dex2oat. Эта утилита запускается, когда вы открываете приложение на телефоне. В этот момент, она прекомпилирует dex файл в oat файл. Данная утилита является простым бинарником и лежит в /system/xbin. Как это относится к теме модификации андроид приложений? Дело в том, что когда вы редактируете dex файлы, именно dex2oat производит первичную верификацию - берет из хэдера значения хэша, чексумы, длины, оффсеты и т.д. Чтобы быстрее проверить модифицированное приложение, раньше я полностью собирал apk, закидывал в эмулятор и смотрел logcat и изучал ошибки, связанные с верификацией dex. Теперь же, можно не париться со сборкой, подписанием apk, а напрямую использовать бинарник dex2oat, для проверки корректности изменений. Можно пойти еще дальше и открыть исходники это проверки (
https://android.googlesource.com/platform/art/+/master/libdexfile/dex/dex_file_verifier.cc). Это сложнее, но надеюсь в ближайшем будущем взять данный исходник, переписать его на более удобный язык и создать тем самым первичный и очень небольшой верификатор (в сети не нашел). Такой верификатор dex файлов пригодился бы при фазинге важнейших систем андроида. Я это к чему, нашел вот такой классный доклад с Black Hat Europe (
https://www.blackhat.com/docs/eu-15/materials/eu-15-Blanda-Fuzzing-Android-A-Recipe-For-Uncovering-Vulnerabilities-Inside-System-Components-In-Android-wp.pdf), прочитав который я понял, что такой мини верификатор очень бы пригодился, так как они фазили и смотрели логи на самом андроиде.
В качестве дополнения, хочу поделиться статьей о создании самого маленького андроид приложения, какого только можно. Чувак просто взял и начал выпиливать все лишнее и получилось очень интересно -
https://fractalwrench.co.uk/posts/playing-apk-golf-how-low-can-an-android-app-go/