
Root-My-Device v0.0.6
Установщик KSU для поддерживаемых прошивок с CVE-2026-43499
Root My Device
Форк BuSung-dev/Root-My-Galaxy под лицензией Apache License 2.0 — см. LICENSE и Благодарности.
Root My Device — это установщик в один клик для явно поддерживаемых сборок прошивки. Само приложение отделено от оффсетов устройств, нативных эксплойт-пейлоадов и артефактов сборки KernelSU.
Фид устройств и нативные пейлоады поддерживаются в
Root-My-Device-Payloads.
Каждый пуш в его ветку main собирает пейлоады и публикует их как
GitHub-релиз под тегом, уникальным для этого запуска. Приложение обращается
к releases/latest этого репозитория, читает оттуда ассет targets-v2.json
и загружает все артефакты, указанные в нём, — поэтому набор устанавливаемых
пейлоадов неизменяем после публикации, и ничего не коммитится как бинарник.
Приложение
Приложение автоматически подбирает точное соответствие по релизу ядра, полному отображаемому 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 репозитория пейлоадов. Именно там место благодарностям на стороне пейлоада и именно там собираются эти артефакты.