Файлы программ для Android имеют формат APK. Файл APK является конечной исполняемой программой для Android и полностью расшифровывается как Android Package, подобно файлам sis в операционной системе Symbian или файлам JAR на платформе J2ME. Формат файла APK на самом деле является форматом ZIP, но расширение было изменено на APK. После распаковки с помощью RAR можно увидеть файлы Dex. Dex расшифровывается как Dalvik VM executes, то есть исполняемая программа Dalvik для Android, и это не байт-код Java, а байт-код Dalvik.
Структура одного файла APK выглядит следующим образом:
res/ - каталог для хранения файлов ресурсов
META-INF/ - в файлах Jar часто встречаются
resources.arsc - скомпилированные двоичные файлы ресурсов, главным образом строки, используемые в программе
AndroidManifest.xml - файл глобальной конфигурации программы
classes.dex - файлы байт-кода Dalvik, наши Java-файлы скомпилированы в формате DEX
В итоге мы видим, что при запуске программы Android сначала необходимо распаковать файл (UnZip), затем программа запускается непосредственно, как в Symbian, что отличается от PE-файлов в Windows Mobile. Такой подход не обеспечивает высокой защиты и надежности программы; с помощью команды dexdump можно выполнить обратную компиляцию. Тем не менее, такой метод соответствует циклам развития: Windows Gadgets или WPF от Microsoft также используют подобную архитектуру.
1. Java-файлы — исходные файлы приложения
Когда люди слышат об Android, они сразу думают о таких файлах. Большая часть Android написана на Java (почти вся синяя часть на архитектурной диаграмме разработана на Java). Приложения для Android должны разрабатываться на Java.
2. Class-файлы — целевые файлы после компиляции Java
В отличие от обычного использования J2SE, где после компиляции Java в class-файл можно сразу запускать программу, файлы class на платформе Android не могут выполняться напрямую. Поскольку Google использует собственную виртуальную машину Dalvik для запуска приложений, эти class-файлы не могут выполняться в среде Sun Java. Лично я считаю, что файлы class в Android фактически являются промежуточными целевыми файлами процессa компиляции и должны быть объединены в файл dex для запуска на Dalvik.3. Файл Dex —— исполняемый файл на платформе Android
Формат файлов байт-кода, поддерживаемый виртуальной машиной Dalvik на Android
Google использовала собственную виртуальную машину Dalvik в новой платформе Android, и эта виртуальная машина исполняет не Java-байт-код, а другой байт-код — байт-код в формате dex. После компиляции Java-кода инструменты на платформе Android позволяют конвертировать Java-байт-код в байт-код Dex. Хотя Google утверждает, что Dalvik предназначен для мобильных устройств, многие в индустрии считают, что это сделано для обхода необходимости получения лицензии Java у Sun. Поскольку детали Dalvik не стали широко известны, конкретная реализация пока неизвестна, и можно лишь проводить простые анализы на основе SDK.
Эта виртуальная машина Dalvik оптимизирована для программ/CPU телефонов, может одновременно выполнять множество виртуальных машин, не занимая слишком много ресурсов. Исходный код Dalvik VM пока не открыт для скачивания (в будущем весь системный код будет открыт), на данный момент Google стремится позволить всем начать разрабатывать приложения с помощью этого SDK, а детали низкоуровневого слоя будут постепенно выпускаться.
4. Файл Apk —— файл установки на Android
Apk — расширение Android-пакета установки. Пакет установки Android содержит все файлы, относящиеся к определённому приложению Android. Apk-файл упаковывает файл AndroidManifest.xml, код приложения (.dex-файл), файлы ресурсов и другие файлы в один архив. В один проект можно собрать только один .apk-файл.
Что касается того, как его взломать, это зависит от человека.
Хочешь посмотреть, как взламывать игры на Android, заходи
Ответы (4)
Вполне возможно в .dex.
)╮(〉_〉")╭ верх
Не понял! Хи-хи
Не понял..
— Все ответы загружены —