Після android
встановлення деяких програм я виявив, що він зміниться на odex
файл (не apk
) на смартфоні. Як це відбувається? Хто може мене навчити, мені це дуже цікаво.
Після android
встановлення деяких програм я виявив, що він зміниться на odex
файл (не apk
) на смартфоні. Як це відбувається? Хто може мене навчити, мені це дуже цікаво.
Відповіді:
Стаття в блозі в основному правильна, але не повна. Щоб мати повне розуміння того, що робить файл odex, вам слід трохи зрозуміти, як працюють файли програм (APK).
Програми - це в основному прославлені архіви ZIP. Код Java зберігається у файлі, який називається classes.dex, і цей файл аналізується Dalvik JVM, а кеш обробленого файлу classes.dex зберігається в кеш-пам'яті Dalvik телефону.
Odex - це, в основному, попередньо оброблена версія класу програми. Коли додаток одексований, classes.dex видаляється з архіву APK, і він нічого не записує в кеш Dalvik. Додаток, який не одексований, закінчується двома копіями файлу classes.dex - пакетованим у файлі .apk та обробленим у кеш-пам'яті Dalvik. Також потрібно трохи більше часу, щоб запуститись вперше, оскільки Dalvik повинен витягти та обробити файл classes.dex.
Якщо ви створюєте користувальницький ПЗУ, дуже гарною ідеєю є одексувати як ваші JAR-файли, так і основні програми, щоб максимізувати внутрішній простір для встановлених користувачем програм. Якщо ви хочете створити тему, просто deodex -> застосуйте свою тему -> reodex -> випустіть.
Для фактичного деодекса використовуйте малі та baksmali:
Ця стаття в блозі пояснює внутрішні елементи файлів ODEX:
ЩО ТАКЕ ФАЙЛ ODEX?
У файловій системі Android програми поставляються в пакетах із розширенням .apk. Ці пакети додатків або файли .apk містять певні файли .odex, функцією яких є економія місця. Ці файли 'odex' насправді є колекціями частин програми, які оптимізовані перед завантаженням. Це прискорює процес завантаження, оскільки попередньо завантажує частину програми. З іншого боку, це також ускладнює злом цих програм, оскільки частина кодування вже була витягнута в інше місце перед виконанням.
APKs contain certain .odex files
?!
МИСТЕЦТВО
Відповідно до документів: http://web.archive.org/web/20170909233829/https://source.android.com/devices/tech/dalvik/configure a .odex
file:
містить збірний AOT код для методів у файлі .apk.
Крім того, вони видаються звичайними спільними бібліотеками, оскільки, якщо ви отримаєте будь-який додаток, і перевірте:
file /data/app/com.android.appname-*/oat/arm64/base.odex
він говорить:
base.odex: ELF shared object, 64-bit LSB arm64, stripped
і, aarch64-linux-gnu-objdump -d base.odex
здається, працює і робить суттєві розбирання (але також деякі ділянки сміття).