Содержание статьи
- Инструменты и ресурсы
- Почитать
- Чем отличается Android Go от обычного Android
- Новые защитные функции Android P
- Обратный TCP-шелл с помощью Frida
- Разработчику
- Генерация кода Kotlin с помощью аннотаций
- Распознавание лиц с помощью нейронной сети
- Распознавание текста с помощью нейронной сети
- Создание анимаций с помощью MotionLayout
- Инструменты дизайна для инди-разработчика
- Инструменты
- Библиотеки
Инструменты и ресурсы
- XDebug — не новый, но весьма полезный модуль Xposed, который позволяет отлаживать любое установленное на смартфон приложение;
- exploit_playground — подборка эксплоитов с комментариями.
Почитать
Чем отличается Android Go от обычного Android
Android Go — How does Google’s lightweight ecosystem compare to the original? — статья с описанием отличий облегченной версии Android от полноценной. Основные тезисы:
- В отличие от устройств Android One, которые поставляются на рынок с «чистым Android», смартфоны на Android Go будут продаваться с модификациями и приложениями производителя смартфона (если он этого пожелает).
- Единственное заметное пользователю отличие Android Go от обычного Android — дизайн окна запущенных приложений.
- В Android Go отключены некоторые ненужные большинству пользователей функции: Daydream VR, функция разделения экрана, поддержка Android Auto и Android Wear, Android for Work.
- По умолчанию в Android Go отключено шифрование, однако некоторые устройства позволят его включить.
- Android Go гораздо более агрессивен в уничтожении фоновых приложений (он старается убрать из памяти все, что не связано с самой операционной системой).
- В Android Go по умолчанию включен zRAM, сжимающий данные в оперативной памяти для ее экономии.
- Некоторые предустановленные приложения Android Go — это веб-приложения; например, Gmail Go и Google Maps Go — это WebView, в котором открывается написанный на HTML5/JS интерфейс, причем Google Maps Go весит 1 Мбайт, а Gmail Go больше стандартного приложения Gmail.
- Часть приложений из комплекта Android Go сильно урезаны: YouTube Go не поддерживает комментарии и не позволяет ставить лайки, Assistant Go не имеет каких-либо опций, другие, наоборот, предоставляют полный набор функций: Google Maps Go почти в точности повторяет оригинальное приложение.
Gmail Go и Google Maps Go |
Новые защитные функции Android P
Compiler-based security mitigations in Android P — пост разработчиков Android с рассказом о том, какие функции компилятора LLVM/Clang они применили в Android P для защиты от разного вида атак.
1. Control Flow Integrity. В современных эксплоитах важным шагом часто бывает модификация указателей на функцию и адресов возврата. Она позволяет обойти ограничение на исполнение стека и сегмента данных с помощью переиспользования кусков самого приложения.
Технология Control Flow Integrity (CFI) предназначена для борьбы с такими эксплоитами. При ее включении компилятор строит граф вызовов функций и встраивает код сверки с этим графом перед каждым вызовом функции. Если вызов происходит по отклоняющемуся от графа адресу, приложение завершается.
Разработчики Android уже включили CFI для нескольких системных компонентов в Android 8. В Android P покрытие расширилось и теперь включает в себя медиафреймворки, а также стек NFC и Bluetooth. Тестовая поддержка также реализована для ядра.
2. Integer Overflow Sanitization. Данная технология предназначена для защиты от целочисленного переполнения. Компилятор встраивает в результирующий код приложений функции проверки, которые используются для подтверждения, что исполняемая арифметическая операция не вызовет переполнения.
Впервые технология была использована в Android 7 для защиты медиастека, в котором обнаружили целый комплекс удаленных уязвимостей Stagefright. В Android P она также используется для защиты следующих компонентов: libui, libnl, libmediaplayerservice, libexif, libdrmclearkeyplugin и libreverbwrapper.
Обратный TCP-шелл с помощью Frida
Shellcoding an Arm64 In-Memory Reverse TCP Shell with Frida — статья с рассказом, как внедрить в Android обратный TCP-шелл с помощью Frida.
Это возможно благодаря классу Arm64Writer, который появился во Frida 10.4. Он позволяет записывать инструкции ARM64 прямо в память, а затем исполнять их. Чтобы создать обратный шелл, автор статьи написал его на языке ассемблера, а затем с помощью Arm64Write поместил в память процесса system_server (в Android это один из центральных компонентов операционной системы).
Часть кода обратного шелла:
var impl = Memory.alloc(Process.pageSize);
Memory.patchCode(impl, Process.pageSize, function (code) {
var arm64Writer = new Arm64Writer(code, { pc: impl });
// SUB SP, SP, #0x50
arm64Writer.putSubRegRegImm('sp', 'sp', 0x50);
// STP X29, X30, [SP, #0x40]
arm64Writer.putStpRegRegRegOffset('x29', 'x30', 'sp', 0x40, 'pre-adjust');
// ADD X29, SP, #0x40
arm64Writer.putAddRegRegImm('x29', 'sp', 0x40);
...
arm64Writer.putRet();
armWriter.flush();
});
Продолжение доступно только участникам
Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее
Вариант 2. Открой один материал
Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя! Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.
Я уже участник «Xakep.ru»