
Эксплойт для ядра Android для CVE-2026-43499 (Futex-PI use-after-free), который предоставляет временный root-доступ на Xiaomi XIG04 для включения ADB. Включает автоматическую сборку полезной нагрузки и активацию одним касанием.
Минимальное 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. Не универсальный или удалённый эксплойт.
Одна кнопка, одна задача:
preload.so) из APK в приватную директорию приложения filesDir, chmod 0700./system/bin/true с LD_PRELOAD, указывающим на этот пейлоад. Конструктор ELF пейлоада запускает use-after-free в Futex-PI, получает временный root и самостоятельно устанавливает клиент и демон su.su -c id и проверяя наличие uid=0.settings put global development_settings_enabled 1settings put global adb_enabled 1stop 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).buildExploitSo (подключена к preBuild) запускает make ... API=31 в эксплойте, а затем копирует полученный preload.so в app/src/main/assets/exploit/preload.so до упаковки APK.Обычный ./gradlew assembleDebug собирает пейлоад и включает его, если установлен Android NDK.
# 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" и ничего не изменит во время выполнения):
./gradlew assembleDebug -PskipExploitBuild
Wrapper jar: gradle-wrapper.jar не включён в репозиторий. Сгенерируйте его один раз с помощью gradle wrapper --gradle-version 8.2, или собирайте с системным Gradle (CI использует системный Gradle, поэтому wrapper jar там не требуется).
.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: в рабочем процессе.
.
├── 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
git submodule update --init --recursive, установите NDK, затем ./gradlew assembleDebug.adb_enabled is now: 1.adb_enabled в глобальных настройках обычно сохраняется, и adbd не требует root после включения.LD_PRELOAD может быть запрещено в зависимости от домена приложения; стратегия самого эксплойта обрабатывает это, и любой запрет отображается в логе, а не скрывается.