Русские Блоги
Исполняемый файл 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 | Базовый адрес сегмента данных |
формат файла 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.
Источник