Назад к обновлениям
New releaseAug 4, 2026

Root-My-Device v0.0.6

Установщик KSU для поддерживаемых прошивок с CVE-2026-43499

Поделиться

Root My Device

Форк BuSung-dev/Root-My-Galaxy под лицензией Apache License 2.0 — см. LICENSE и Благодарности.

sprout_icon_108

Root My Device — это установщик в один клик для явно поддерживаемых сборок прошивки. Само приложение отделено от оффсетов устройств, нативных эксплойт-пейлоадов и артефактов сборки KernelSU.

Последний релиз

Фид устройств и нативные пейлоады поддерживаются в Root-My-Device-Payloads. Каждый пуш в его ветку main собирает пейлоады и публикует их как GitHub-релиз под тегом, уникальным для этого запуска. Приложение обращается к releases/latest этого репозитория, читает оттуда ассет targets-v2.json и загружает все артефакты, указанные в нём, — поэтому набор устанавливаемых пейлоадов неизменяем после публикации, и ничего не коммитится как бинарник.

Приложение

KakaoTalk_20260718_170922353 KakaoTalk_20260718_171127319 KakaoTalk_20260718_171030202

Приложение автоматически подбирает точное соответствие по релизу ядра, полному отображаемому ID сборки, SDK, ABI и размеру страницы. Расширенный режим позволяет выбрать профиль вручную и показывает отдельные предупреждения о релизе ядра и о сборке.

Режим отладки

Профиль не попадает в фид, пока собственный маршрут приложения не завершится на этом устройстве, а приложение читает именно фид, — поэтому запуску, который должен установить, работает ли этот маршрут, нечего загружать. Режим отладки предназначен именно для этого случая: это отдельный от расширенного режима переключатель, выключенный по умолчанию, который читает пейлоад из папки на устройстве. При его включении появляется поле выбора папки, в верхнем уровне которой лежат три файла:

profile.json
cve-2026-43499-app.release.so
ksud

Эти два артефакта — то, что собирает репозиторий пейлоадов, и эти имена используются по умолчанию. Демон, поставляемый под именем ksud-<id>, которое используют релизы этого репозитория, необходимо переименовать либо указать в манифесте как kernelsu.name (а для пейлоада — exploit.name).

profile.json содержит только то, что нельзя получить с самого устройства, под именами ключей самого фида:

{
  "profileId": "xig07-jp-OS3.0.7.0.WNEJPKD",
  "kernelsu": { "kmi": "android14-6.1", "managerPackage": "me.weishu.kernelsu" }
}

Эти три поля обязательны. Все поля, по которым фид сопоставляет устройство, — релиз ядра, отображаемый ID сборки, SDK, ABI, размер страницы — берутся вместо этого с этого устройства, поскольку локальный профиль ни с чем не сопоставляется. Задание kernelRelease или buildDisplay в любом случае необязательно и сверяется с устройством — именно поэтому можно безопасно хранить папки нескольких целевых устройств рядом.

Ни одна из проверок, которым подвергается загруженный пейлоад, здесь не применяется, и приложение об этом сообщает. Запуск из папки помечается как таковой в журнале, в сводке и как local:<folder> в записи истории, так что ни один завершённый запуск впоследствии нельзя прочитать как запуск из фида.

Сборка

Требования:

  • Android Studio JBR 21
  • Android SDK 37
  • Android NDK 28 или новее
  • CMake 3.22.1

APK содержит одну нативную программу, которая не собирается из исходников этого репозитория, поэтому клонируйте с подмодулями:

git clone --recurse-submodules https://github.com/Witaqua-tools/Root-My-Device
# or, in an existing checkout
git submodule update --init payloads
$env:JAVA_HOME='C:\Program Files\Android\Android Studio\jbr'
.\gradlew.bat :app:assembleDebug

Вывод:

app/build/outputs/apk/debug/app-debug.apk

Bootstrap-хелпер

lib/arm64-v8a/libcve43499root.so в APK — это не библиотека: это bootstrap-хелпер, исполняемый файл, который приложение запускает через ProcessBuilder из nativeLibraryDir. Именно он загружает загруженный пейлоад, а после того, как пейлоад получил root-права, обслуживает su через сокет.

Он компилируется из исходников посредством app/src/main/cpp/CMakeLists.txt, а не коммитится как бинарник. Однако самих исходников здесь нет: автономный маршрут пейлоада исполняет ту же программу из фиксированного пути, поэтому репозиторий пейлоадов тоже должен её собирать, и она остаётся в единственном экземпляре. Этот репозиторий получает её через подмодуль payloads, закреплённый коммит которого фиксирует, из какой именно ревизии был собран APK.

Это означает две сборки из одного исходника, и это сделано намеренно. Репозиторий пейлоадов закрепляет NDK 29 на API 35, потому что его эксплойт-пейлоад — это блоб фиксированного размера, чей тулчейн является частью его идентичности; здесь же CMake использует ndkVersion этого модуля для minSdk. Хелпер не зависит ни от того, ни от другого — в любом случае это одна и та же программа, и копия, которую поставляет приложение, собрана здесь.

Две его особенности критически важны, и их легко случайно нарушить: он должен быть исполняемым файлом (add_executable плюс -pie, благодаря чему у него есть PT_INTERP, которого у разделяемой библиотеки не было бы), и он должен называться lib*.so при jniLibs.useLegacyPackaging = true, потому что именно в этом случае он извлекается в nativeLibraryDir как настоящий файл с выставленным битом исполнения. Обе особенности закомментированы там, где задаются.

Используйте только на собственных устройствах или на устройствах, на тестирование которых у вас есть явное разрешение.

Благодарности

Это приложение

Форк Root-My-Galaxy от BuSung-dev, сохраняющий оригинальную лицензию Apache License 2.0 — см. LICENSE.

Пейлоады, которые оно запускает

Это приложение загружает и запускает то, что публикует Root-My-Device-Payloads, — сам являющийся форком Root-My-Galaxy-Payloads от BuSung-dev.

В этом репозитории нет ничего, что причитается пейлоаду, и ничего из этого здесь не повторяется. KernelSU (то, что загружает успешный запуск), апстрим каждого ядра, исходный код, от которого происходят эти ядра, и условия лицензий всего, что там собрано, — всё это указано в README репозитория пейлоадов. Именно там место благодарностям на стороне пейлоада и именно там собираются эти артефакты.

Категории