## https://sploitus.com/exploit?id=KITPLOIT:TOOLS-GITHUB-SORALIS0912-CVE-2026-43499-ARISTOTLE-APK
# Aristotle ADB Enable
Минимальное Android-приложение, которое включает **ADB** на **au/KDDI Xiaomi "aristotle" (XIG04, Android 12)** , чьи параметры разработчика недоступны, используя временный root, полученный через **CVE-2026-43499**. Это инструмент для владельца устройства той же категории, что и KingRoot: он рутит ваш собственный телефон, чтобы переключить настройку.
> Область применения: ваш собственный XIG04, работающий под управлением `Xiaomi/XIG04_jp_kdi/XIG04:12/SP1A.210812.016/V14.0.3.0.TMFJPKD`. Не универсальный или удалённый эксплойт.
* * *
## Что делает
Одна кнопка, одна задача:
1. Размещает эксплойт-пейлоад (`preload.so`) из APK в приватную директорию приложения `filesDir`, `chmod 0700`.
2. Запускает ядерную ошибку, запуская короткоживущий `/system/bin/true` с `LD_PRELOAD`, указывающим на этот пейлоад. Конструктор ELF пейлоада запускает use-after-free в Futex-PI, получает временный root и самостоятельно устанавливает клиент и демон `su`.
3. Подтверждает root, выполняя `su -c id` и проверяя наличие `uid=0`.
4. Включает ADB от root:
* `settings put global development_settings_enabled 1`
* `settings put global adb_enabled 1`
* `stop adbd; start adbd` (возвращается к `setprop ctl.restart adbd`)
Каждый шаг выводится в экранный лог.
## Уязвимость
**CVE-2026-43499** — use-after-free в пути Futex-PI ядра Linux (`kernel/locking/rtmutex.c`, `remove_waiter()`). Ядро aristotle `5.10.136-android12` подвержено уязвимости (`CONFIG_FUTEX_PI=y`, `CONFIG_RT_MUTEXES=y`). Эксплойт использует data-only "direct-root" (замена `cred`, отключение SELinux enforcing) и подбирает MTE-теги, чтобы обойти защиту устройства. Исходный код эксплойта и измеренные смещения для aristotle находятся в **git-подмодуле`exploit/`** этого репозитория.
* * *
## Пейлоад собирается автоматически
`preload.so` **не включён в репозиторий**. Он создаётся из подмодуля `exploit/` и встраивается в APK во время сборки:
* `exploit/` — git-подмодуль: эксплойт CVE-2026-43499 для aristotle (собирает `preload.so`).
* Задача Gradle `buildExploitSo` (подключена к `preBuild`) запускает `make ... API=31` в эксплойте, а затем копирует полученный `preload.so` в `app/src/main/assets/exploit/preload.so` до упаковки APK.
Обычный `./gradlew assembleDebug` собирает пейлоад и включает его, если установлен Android NDK.
## Сборка
root@kitploit:~
# 1. fetch the exploit submodule
git submodule update --init --recursive
# 2. install the Android NDK r29 (the exploit Makefile auto-detects it,
# or export ANDROID_NDK_ROOT), plus JDK 17 and Android SDK platform 34
# 3. build — auto-builds preload.so (API=31) and embeds it
./gradlew assembleDebug # -> app/build/outputs/apk/debug/app-debug.apk
Нет NDK / нужна только оболочка приложения? Пропустите сборку пейлоада (приложение сообщит "exploit payload NOT deployed" и ничего не изменит во время выполнения):
root@kitploit:~
./gradlew assembleDebug -PskipExploitBuild
**Wrapper jar:** `gradle-wrapper.jar` не включён в репозиторий. Сгенерируйте его один раз с помощью `gradle wrapper --gradle-version 8.2`, или собирайте с системным Gradle (CI использует системный Gradle, поэтому wrapper jar там не требуется).
## CI / релизы
`.github/workflows/build-release.yml` (GitHub Actions) собирает APK при **каждом пуше** и публикует его как **GitHub Release** (тег `build-<run>`), с прикреплённым `app-debug.apk`. Рабочий процесс проверяет подмодуль `exploit`, устанавливает JDK 17 / Android SDK 34 / NDK r29 и запускает `gradle assembleDebug`, который собирает и встраивает `preload.so` (API=31).
Одноразовая настройка: отправьте этот репозиторий и репозиторий эксплойта одному и тому же **владельцу GitHub** как соседние репозитории, чтобы относительный URL подмодуля разрешался. Если репозиторий эксплойта приватный, добавьте PAT с областью `repo` как секрет `SUBMODULE_PAT` и раскомментируйте строку `token:` в рабочем процессе.
## Структура
root@kitploit:~
.
├── settings.gradle / build.gradle / gradle.properties Gradle wiring
├── gradlew(.bat) + gradle/wrapper/ wrapper
├── exploit/ git submodule (builds preload.so)
└── app/
├── build.gradle minSdk 31 / targetSdk 31 / compileSdk 34, arm64-v8a; buildExploitSo task
└── src/main/
├── AndroidManifest.xml single launcher Activity, no dangerous perms
├── java/.../MainActivity.kt button + scrolling log
├── java/.../ExploitRunner.kt stage → LD_PRELOAD → su -c "settings ..."
├── res/{layout,values}/ UI, strings, theme
└── assets/exploit/ preload.so is embedded here at build time
## Запуск
1. `git submodule update --init --recursive`, установите NDK, затем `./gradlew assembleDebug`.
2. Установите и запустите на XIG04. Если вы пытаетесь включить ADB, установите APK с самого устройства (файловый менеджер / загрузка из браузера) и откройте его из лаунчера.
3. Нажмите **Enable ADB (tmp-root)** и наблюдайте за логом. В случае успеха он завершится строкой `adb_enabled is now: 1`.
4. Подключите ADB с вашего ПК как обычно.
## Ограничения / предостережения
* **Однократная сборка.** Смещения привязаны к указанной прошивке; для другой сборки требуется перепортированный пейлоад.
* **tmp-root непостоянен.** Root теряется при перезагрузке. `adb_enabled` в глобальных настройках обычно сохраняется, и adbd не требует root после включения.
* **SELinux / W^X.** Выполнение файла из приватной директории приложения через `LD_PRELOAD` может быть запрещено в зависимости от домена приложения; стратегия самого эксплойта обрабатывает это, и любой запрет отображается в логе, а не скрывается.
* **Только для владельцев устройств.** Это предназначено для разблокировки ADB на принадлежащем вам оборудовании.