Добро пожаловать обратно, мои начинающие хакеры!
Прежде чем мы углубимся в этот долгожданный раздел «Взлом Android», нам сначала нужно немного разобраться в операционной системе Android.
Операционная система Android была приобретена компанией Google в 2005 году, когда она приобрела компанию с любопытным названием Android Inc. Пару лет спустя, в 2007 году, Google и несколько других компаний основали Open Handset Alliance для разработки открытых стандартов мобильных вычислений. Эта группа затем разработала Android на основе ядра Linux 2.6. Первый телефон на базе ОС Android был выпущен в 2008 году.
Модель Android
Чтобы эффективно взломать операционную систему Android, нам необходимо базовое понимание её архитектуры. Android, как и практически любая другая платформа, состоит из множества слоёв. На рисунке ниже показаны слои платформы Android.
Каждый уровень предоставляет определённые услуги уровням, расположенным выше. Давайте подробно рассмотрим каждый из этих уровней.
Уровень ядра Linux (красный)
Операционная система Android построена на ядре Linux с небольшими изменениями, внесёнными Google. Это ядро отвечает за основные функции, такие как управление процессами и памятью, безопасность и сетевые функции.
Библиотеки (зеленые)
Следующий уровень архитектуры Android — это нативные библиотеки Android. Эти библиотеки, подобно библиотекам Linux, написаны на C или C++ и помогают устройству обрабатывать различные типы данных. Пожалуй, самое важное — это библиотеки времени выполнения, которые отвечают за запуск приложений на Android и включают в себя виртуальную машину Dalvik.
Виртуальная машина Dalvik (желтая)
Все приложения на платформе Android написаны на Java. Как вы знаете, при компиляции Java получается байт-код. Виртуальная машина Java может выполнять этот байт-код, но Android использует для его запуска специальную виртуальную машину — вышеупомянутую виртуальную машину Dalvik.
Наша виртуальная машина Dalvik на базе ОС Android запускает байт-код, преобразованный компилятором Dex. Компилятор Dex преобразует байт-код в более эффективную форму, требующую меньше энергии и ресурсов для наших мобильных устройств.
Структура приложения
Уровень приложений
Это самый верхний уровень, на котором пользователь взаимодействует с устройством. Приложения бывают двух типов: предустановленные и установленные пользователем. Приложения, установленные пользователем, загружаются из разных источников, но чаще всего из Google Play.
Безопасность Android
Android был разработан с учётом безопасности. Разработчики используют функции, которые помогают защитить пользовательские данные, используя многоуровневую защиту. К ним относятся, среди прочего, модель разрешений и изолированная программная среда. Давайте рассмотрим эти две функции безопасности.
Модель разрешения
Любому приложению Android необходимо предоставить разрешения на доступ к конфиденциальным функциям, таким как интернет, номеронабиратель, местоположение и т. д., от пользователя, устанавливающего приложение (к сожалению, большинство людей просто нажимают «ОК» при установке приложений, не разбираясь в предоставляемых разрешениях). Эта модель помогает предотвратить установку вредоносного ПО на устройство, поскольку пользователь уделяет время обдумыванию и выбору приемлемых разрешений для приложения.
Песочница приложений
В Android каждое приложение запускается от имени уникального пользователя, что гарантирует изоляцию каждого приложения на уровне ядра. Как и в Linux, ядро использует ограничения UID и GID, чтобы приложение не могло получить доступ к данным другого пользователя.
Иерархия файлов Android
Чтобы взломать систему Android, нам нужно понять иерархию файловой системы. Если вы знакомы с иерархией файловой системы Linux, Android покажется вам довольно знакомым. Файловая система Android — это модифицированная версия файловой системы Linux.
Ниже приведен краткий список наиболее важных папок в Android с точки зрения хакера.
/система
Этот каталог содержит большинство системных файлов, помимо ядра. Он аналогичен каталогу / в стандартной системе Linux, поэтому вы найдёте в нём такие подкаталоги, как bin и т.д., lib, media, usr и другие.
/данные
В этом каталоге хранятся данные всех приложений. SMS-сообщения, контакты и набранные номера находятся в каталоге /data.
/корень
Домашний каталог пользователя root.
Подписание приложений
Все приложения Android должны иметь цифровую подпись разработчика. Разработчик хранит закрытый ключ, и для обновления и других действий с приложениями он должен использовать тот же ключ.
В следующей части этой серии мы рассмотрим файловую систему Android.
Прежде чем мы углубимся в этот долгожданный раздел «Взлом Android», нам сначала нужно немного разобраться в операционной системе Android.
Операционная система Android была приобретена компанией Google в 2005 году, когда она приобрела компанию с любопытным названием Android Inc. Пару лет спустя, в 2007 году, Google и несколько других компаний основали Open Handset Alliance для разработки открытых стандартов мобильных вычислений. Эта группа затем разработала Android на основе ядра Linux 2.6. Первый телефон на базе ОС Android был выпущен в 2008 году.
Модель Android
Чтобы эффективно взломать операционную систему Android, нам необходимо базовое понимание её архитектуры. Android, как и практически любая другая платформа, состоит из множества слоёв. На рисунке ниже показаны слои платформы Android.
Каждый уровень предоставляет определённые услуги уровням, расположенным выше. Давайте подробно рассмотрим каждый из этих уровней.
Уровень ядра Linux (красный)
Операционная система Android построена на ядре Linux с небольшими изменениями, внесёнными Google. Это ядро отвечает за основные функции, такие как управление процессами и памятью, безопасность и сетевые функции.
Библиотеки (зеленые)
Следующий уровень архитектуры Android — это нативные библиотеки Android. Эти библиотеки, подобно библиотекам Linux, написаны на C или C++ и помогают устройству обрабатывать различные типы данных. Пожалуй, самое важное — это библиотеки времени выполнения, которые отвечают за запуск приложений на Android и включают в себя виртуальную машину Dalvik.
Виртуальная машина Dalvik (желтая)
Все приложения на платформе Android написаны на Java. Как вы знаете, при компиляции Java получается байт-код. Виртуальная машина Java может выполнять этот байт-код, но Android использует для его запуска специальную виртуальную машину — вышеупомянутую виртуальную машину Dalvik.
Наша виртуальная машина Dalvik на базе ОС Android запускает байт-код, преобразованный компилятором Dex. Компилятор Dex преобразует байт-код в более эффективную форму, требующую меньше энергии и ресурсов для наших мобильных устройств.
Структура приложения
Уровень приложений
Это самый верхний уровень, на котором пользователь взаимодействует с устройством. Приложения бывают двух типов: предустановленные и установленные пользователем. Приложения, установленные пользователем, загружаются из разных источников, но чаще всего из Google Play.
Безопасность Android
Android был разработан с учётом безопасности. Разработчики используют функции, которые помогают защитить пользовательские данные, используя многоуровневую защиту. К ним относятся, среди прочего, модель разрешений и изолированная программная среда. Давайте рассмотрим эти две функции безопасности.
Модель разрешения
Любому приложению Android необходимо предоставить разрешения на доступ к конфиденциальным функциям, таким как интернет, номеронабиратель, местоположение и т. д., от пользователя, устанавливающего приложение (к сожалению, большинство людей просто нажимают «ОК» при установке приложений, не разбираясь в предоставляемых разрешениях). Эта модель помогает предотвратить установку вредоносного ПО на устройство, поскольку пользователь уделяет время обдумыванию и выбору приемлемых разрешений для приложения.
Песочница приложений
В Android каждое приложение запускается от имени уникального пользователя, что гарантирует изоляцию каждого приложения на уровне ядра. Как и в Linux, ядро использует ограничения UID и GID, чтобы приложение не могло получить доступ к данным другого пользователя.
Иерархия файлов Android
Чтобы взломать систему Android, нам нужно понять иерархию файловой системы. Если вы знакомы с иерархией файловой системы Linux, Android покажется вам довольно знакомым. Файловая система Android — это модифицированная версия файловой системы Linux.
Ниже приведен краткий список наиболее важных папок в Android с точки зрения хакера.
/система
Этот каталог содержит большинство системных файлов, помимо ядра. Он аналогичен каталогу / в стандартной системе Linux, поэтому вы найдёте в нём такие подкаталоги, как bin и т.д., lib, media, usr и другие.
/данные
В этом каталоге хранятся данные всех приложений. SMS-сообщения, контакты и набранные номера находятся в каталоге /data.
/корень
Домашний каталог пользователя root.
Подписание приложений
Все приложения Android должны иметь цифровую подпись разработчика. Разработчик хранит закрытый ключ, и для обновления и других действий с приложениями он должен использовать тот же ключ.
В следующей части этой серии мы рассмотрим файловую систему Android.