
Programme d'installation KSU pour les firmwares pris en charge avec CVE-2026-43499
Un fork de BuSung-dev/Root-My-Galaxy, sous la licence Apache 2.0 — voir LICENSE et Credits.
Root My Device est un installateur en un clic pour des versions de firmware explicitement prises en charge. L'application elle-même est tenue séparée des offsets d'appareils, des payloads d'exploit natifs et des artefacts de build KernelSU.
Le flux d'appareils et les payloads natifs sont maintenus dans
Root-My-Device-Payloads.
Chaque push sur sa branche main compile les payloads et les publie en tant que
version GitHub sous un tag unique à cette exécution. L'application résout le
releases/latest de ce dépôt, lit l'asset targets-v2.json depuis celui-ci, et
télécharge chaque artefact qui y est nommé — ainsi l'ensemble des payloads qu'elle installe est
immuable une fois publié, et rien n'est commité en tant que binaire.
L'application sélectionne automatiquement une correspondance exacte pour la version du noyau, l'ID d'affichage complet du build, le SDK, l'ABI et la taille de page. Le mode avancé peut sélectionner un profil manuellement et présente des avertissements distincts pour la version du noyau et le build.
Un profil reste hors du flux tant que la propre route de l'application ne s'est pas exécutée sur cet appareil, et le flux est ce que l'application lit — ainsi l'exécution qui établirait si cette route fonctionne n'a rien à télécharger. Le mode débogage est prévu pour ce cas : un commutateur distinct du mode avancé, désactivé par défaut, qui lit le payload depuis un dossier sur l'appareil. L'activer révèle le dossier vers lequel le pointer, qui contient trois fichiers à son niveau racine :
profile.json
cve-2026-43499-app.release.so
ksud
Les deux artefacts sont ce que construit le dépôt de payload, et ces noms sont
les valeurs par défaut. Un démon porté sous le nom ksud-<id> utilisé par les
releases de ce dépôt doit être renommé, ou nommé dans le manifeste comme kernelsu.name
(exploit.name pour le payload).
profile.json ne contient que ce qui ne peut pas être extrait de l'appareil, sous
les propres noms de clés du feed :
{
"profileId": "xig07-jp-OS3.0.7.0.WNEJPKD",
"kernelsu": { "kmi": "android14-6.1", "managerPackage": "me.weishu.kernelsu" }
}
Ces trois champs sont obligatoires. Chaque champ que le flux utilise pour faire correspondre un appareil — version du noyau, identifiant d'affichage de build, SDK, ABI, taille de page — provient plutôt de cet appareil, puisqu'un profil local n'est comparé à rien. Nommer kernelRelease ou buildDisplay reste néanmoins facultatif et est vérifié par rapport à l'appareil, ce qui permet de conserver sans risque les dossiers de plusieurs cibles côte à côte.
Aucune des vérifications appliquées à une charge utile téléchargée ne s'applique ici, et l'application l'indique. Une exécution depuis un dossier est signalée comme telle dans le journal, dans la vue d'ensemble, et sous la forme local:<folder> dans son entrée d'historique, afin qu'aucune exécution terminée ne puisse être relue par la suite comme une exécution de flux.
Prérequis :
L'APK contient un programme natif qui n'est pas compilé à partir des sources propres à ce dépôt ; clonez donc avec les sous-modules :
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
I need the actual content to translate. The INPUT section is empty — no Markdown text was provided. Please paste chunk 9 of the README, and I'll return the French translation with all structure preserved.
app/build/outputs/apk/debug/app-debug.apk
lib/arm64-v8a/libcve43499root.so dans l'APK n'est pas une bibliothèque — c'est
l'assistant d'amorçage, un exécutable que l'application lance avec ProcessBuilder depuis
nativeLibraryDir. C'est lui qui charge une charge utile téléchargée, et ensuite qui
sert su sur une socket une fois que la charge utile a obtenu les droits root.
Il est compilé depuis les sources par app/src/main/cpp/CMakeLists.txt,
et non versionné sous forme de binaire. La source n'est cependant pas ici : la route autonome de la charge utile exécute le même programme depuis un chemin fixe, le dépôt de la charge utile doit donc le compiler aussi, et il en reste l'unique copie. Ce dépôt y accède via le sous-module payloads, dont le commit épinglé constitue l'enregistrement exact de la révision à partir de laquelle un APK a été compilé.
Cela implique deux compilations d'une même source, délibérément. Le dépôt de la charge utile épingle le NDK 29 à l'API 35 parce que sa charge utile d'exploit est un blob de taille fixe dont la chaîne d'outils fait partie de son identité ; ici, CMake utilise le ndkVersion de ce module à minSdk. L'assistant ne dépend ni de l'un ni de l'autre — c'est le même programme dans les deux cas, et la copie embarquée par l'application est celle compilée ici.
Deux choses à son sujet sont essentielles et faciles à défaire par accident : il doit être un exécutable (add_executable plus -pie, afin qu'il possède un PT_INTERP qu'une bibliothèque partagée n'aurait pas), et il doit être nommé lib*.so avec jniLibs.useLegacyPackaging = true, car c'est ce qui lui permet d'être extrait dans nativeLibraryDir comme un véritable fichier avec le bit d'exécution activé. Les deux points sont commentés là où ils sont définis.
À utiliser uniquement sur des appareils que vous possédez ou que vous êtes explicitement autorisé à tester.
Un fork de Root-My-Galaxy par BuSung-dev, qui conserve la licence Apache d'origine 2.0 — voir LICENSE.
Cette application télécharge et exécute ce que publie Root-My-Device-Payloads — lui-même un fork de Root-My-Galaxy-Payloads par BuSung-dev.