Что такое odex, deodex, деодексация приложений

Сен 21, 2016 by     No Comments    Posted under: Android

Что такое ODEX файл ?

*.ODEX (Optimized Dalvik EXecutable)

В файловой системе Android, пакет приложения находится в файле  с расширением .apk.
Эти пакеты приложений могут содержать файл .odex, которые помогают сохранять место в памяти.

Эти файлы ODEX на самом деле являются частью приложения, которые оптимизированы перед загрузкой смартфона.

Это ускоряет процесс загрузки, так как загружается часть приложения.
С другой стороны, это также делает затруднение во вскрытии этого приложения, так как часть кода уже извлечена в другое место перед выполнением.

 

Что такое деодексация приложений?
Deodex — это, в основном, переупаковка  APK, таким образом, что .odex будут собран в classes.dex файл.(внутри apk)
Делая это, все части пакета приложения ставятся в одном месте — в apk, тем самым, облегчая модифицированние APK.

Исполняемый код в файлах apk находится в файле classes.dex. Этот файл можно разобрать, отредактировать . Однако во многих прошивках код вынесен из файла apk в файл *.odex, так называемый «оптимизированный» dex(Odex). Но файл *.odex нельзя разобрать напрямую — перед этим его нужно деодексировать, то есть привести к виду classes.dex и вернуть в файл apk. Этот процесс и называется деодексацией.

Как это работает?

Android OS использует виртуальную машину Java на базе под названием Dalvik Virtual Machine.
Deodexed или .dex файл содержит кэш, используемый этой виртуальной машиной (называется Dalvik-кэш) для программы, и он хранится внутри APK.

Файл .odex, с другой стороны, является оптимизированной версией этого же самого.
только ODEX файл, который хранится рядом с APK, а не внутри него.
Android применяет этот метод по умолчанию для всех системных приложений.

Когда система Android  загружается, кэш davlik для Davlik VM строится с использованием этих .odex файлов, позволяя ОС заранее узнать, какие приложения будут загружены, и, таким образом, ускоряет процесс загрузки.

По Деодексации этих файлов , разработчик фактически помещает .odex файлы обратно в соответствующий пакет APK.
Поскольку весь код теперь содержится внутри самого APK, становится возможным изменять любой пакет приложений, избегая конфликтов с окружающей средой исполнения операционной системы.

Достоинства и  недостатки

Преимущество деодексирования в возможностях модификации.
Это наиболее широко используется в пользовательских прошивках и темах. Разработчики сборки собственной прошивки почти всегда выбирают деодексированный пакет прошивки, поскольку это поможет не только изменять различные APK-файлы, но и оставить место для установки различных тематизаций.

С другой стороны, так как .odex файлы должны были быстро создать кэш Dalvik, их удаление будет означать большее начальное время загрузки.
Однако это справедливо только для первой загрузки деокседированных приложений, так как кэш будет по-прежнему создан и встроен в течении долгого времени, до того, пока используется приложение.
Более длительное время загрузки можно увидеть только раз, если кэш Dalvik затерся по какой-либо причине.

Примечание: Темы для Android находятся в APK, также, и, если вы хотите изменить что-либо, вы всегда должны выбрать деодексированные пользовательские прошивки.

 

Примечание

Для установки деодексированной прошивки нужен кастомный recovery


Программы для деодексирования

Lollipop Batch Deodexer

lbd2-5

программма для deodex приложений  ОС  Android Lollipop

Выбираем распакованную папку system (с ОС лоллипоп) с одексированными приложениями и нажимаем Start processdeodex_lollipop_os

Деодексированные файлы перезаписываются поверх одексированных! В  той папке, которую вы выбрали.


Деодексирование

В случае прошивок 4.4 и ниже

1)

Скачиваем этот архив

apktool

 

1.1)Извлекаем его в корень диска C:/

1.2)Кидаем в эту папку папку framework со своей прошивки

1.3)И файл .apk с соответствующим .odex файлом

в файле «декомпилировать ODEX.bat»

меняем имя файла одекс на своё, и запускаем, в итоге у нас получится в папке C:/apktool/ папка out с декомпилированным odex в smali

2)

Запускаем файл «скомпилировать smali в DEX.bat»

После удачного процесса у нас появится в корне C:/apktool/ файл  classes.dex

3)

Далее в файле

«Добавить classes.dex в apk» меняем имя одексированного приложения на своё, в которое будет записан ранее созданный classes.dex

Всё.На этом приложение деодексированно.


 

Comments are closed.