Исполняемые файлы для андроида

Русские Блоги

Исполняемый файл Android

Введение

Исполняемые файлы являются основой операционной системы, которая отражает операционный механизм системы, как и исполняемые файлы системы Android.

Apk — это аббревиатура от Android Package. Фактически, файл Apk представляет собой пакет, сжатый в zip-формате. Используйте программу распаковки формата zip для распаковки файла apk. Вы обнаружите, что он состоит из некоторых ресурсов изображений и других файлов.

Composition, и каждый файл apk содержит файл classes.dex, который является исполняемым файлом Dalvik.

формат файла dex

В системе Android dex-файл — это файл, который можно загрузить и запустить непосредственно на виртуальной машине Dalvik. С помощью ADT после сложной компиляции исходный код java может быть преобразован в файл dex. Так каков формат этого файла? Почему Android не использует файл класса напрямую, а использует другой файл? Фактически, это результат оптимизации для встраиваемых систем.Код инструкций виртуальной машины Dalvik не является стандартным кодом инструкций виртуальной машины Java, но использует свой собственный уникальный набор инструкций. Если у вас есть собственная система компиляции, вы можете создавать файлы dex напрямую, не создавая файлы классов. В файле dex используется множество имен классов и постоянных строк, что делает его меньше по размеру и повышает эффективность работы. Но в конечном итоге Dalvik остается реализацией виртуальной машины на основе регистров .

Заголовок файла Dex в основном включает контрольную сумму, адрес смещения и информацию о длине других структур.

имя поля значение смещения длина Описание
magic 0x0 8 Значение «Magic» — это поле магического числа, формат такой как «dex / n035 / 0», где 035 представляет версию структуры.
checksum 0x8 4 Проверить код.
signature 0xC 20 Подпись SHA-1.
file_size 0x20 4 Общая длина файла Dex.
header_size 0x24 4 Длина заголовка файла, версия 009 = 0x5C, версия 035 = 0x70.
endian_tag 0x28 4 Константа, определяющая порядок байтов. По этой константе можно судить, поменялся ли в файле порядок байтов местами. По умолчанию это = 0x78563412.
link_size 0x2C 4 Размер сегмента соединения. Если он равен 0, это означает статическое соединение.
link_off 0x30 4 Начальная позиция сегмента ссылки, считая с начала этого файла. Если размер сегмента подключения равен 0, он также равен 0 здесь.
map_off 0x34 4 Базовый адрес данных карты.
string_ids_size 0x38 4 Количество строк в списке строк.
string_ids_off 0x3C 4 Базовый адрес таблицы списка строк.
type_ids_size 0x40 4 Количество типов в списке типов.
type_ids_off 0x44 4 Базовый адрес списка типов.
proto_ids_size 0x48 4 Количество прототипов в списке прототипов.
proto_ids_off 0x4C 4 Базовый адрес списка прототипов.
field_ids_size 0x50 4 Количество полей в списке полей.
field_ids_off 0x54 4 Базовый адрес списка полей.
method_ids_size 0x58 4 Количество методов в списке методов.
method_ids_off 0x5C 4 Базовый адрес списка методов.
class_defs_size 0x60 4 Класс определяет количество классов в таблице классов.
class_defs_off 0x64 4 Базовый адрес списка определений класса.
data_size 0x68 4 Размер сегмента данных должен быть выровнен по 4 байтам.
data_off 0x6C 4 Базовый адрес сегмента данных
Читайте также:  Android wear with nfc
формат файла odex

odex — это сокращение от OptimizedDEX, что означает оптимизированный файл dex.

odex имеет два способа существования: один извлекается из программы apk, хранится в том же каталоге, что и файл apk, а суффикс файла — odex, большинство этих файлов odex являются системными программами Android ROM;

Другой — файл кэша dalvik-cache. Этот тип файла Odex по-прежнему использует dex в качестве суффикса и хранится в каталоге cache / dalvik-cache в форме «apk path @ apk @ classes.dex».

проверка файла dex

Android предоставляет инструмент dexopt для проверки и оптимизации файлов dex. Это программное обеспечение с открытым исходным кодом, которое можно загрузить вместе с исходным кодом. Процесс проверки выглядит следующим образом:

резюме

Разберитесь в форматах файлов dex и odex и получите более глубокое представление о самой программе Android. Конечно, вы также можете взломать программу, изменив путь выполнения в dex, потому что код приложения Android хранится в файле dex.

Источник

Оцените статью