
GhostLock (CVE-2026-43499) app pour la série Galaxy S26
indev.ghostlock.s26)Wrapper Android en un clic pour polygraphene/ghostlock-s26 : GhostLock (CVE-2026-43499) porté sur toute la série Samsung Galaxy S26 (Android 16 / GKI 6.12). Un seul APK, trois lignées de noyau, correspondance des paramètres à l'exécution - aucune variante d'application par build.
À utiliser uniquement sur des appareils que vous possédez ou que vous êtes explicitement autorisé à tester. Le root temporaire disparaît au redémarrage. Une seconde exécution de l'exploit dans le même démarrage peut faire planter l'appareil - redémarrez avant de réessayer.
Avertissement : l'expérimentation de ce logiciel implique des exploits de noyau de bas niveau, le root et des revendications au démarrage. Il est fourni EN L'ÉTAT, sans garantie d'aucune sorte. Vous l'utilisez entièrement à vos propres risques ; l'auteur n'est pas responsable des appareils briqués, bloqués en boucle de démarrage ou autrement endommagés, ni d'aucune perte de données, annulation de garantie ou dommage découlant de son utilisation.
L'exploit effectue la correspondance par lignée de noyau, et non par build
individuel (exploit/src/params_table.c fait autorité ; ParamsTable.kt le
reflète uniquement pour le verdict de l'interface) :
| Nom de code de l'appareil | Nom commercial | SoC | Lignée de noyau |
|---|---|---|---|
| m1q | Galaxy S26 (SM-S942x) | Snapdragon | cn ou intl (selon CSC) |
| m2q | Galaxy S26+ (SM-S947x) | Snapdragon | cn ou intl (selon CSC) |
| m3q | Galaxy S26 Ultra (SM-S948x) | Snapdragon | cn ou intl (selon CSC) |
| m1s | Galaxy S26 (SM-S942B) | Exynos | exynos |
| m2s | Galaxy S26+ (SM-S947B) | Exynos | exynos |
Versions testées (17) : S9420ZCS4AZG1, S9470ZCS4AZG1, S9480ZCS3AZF1, S9480ZCS4AZG1, S942BXXS4AZG5, S947BXXS3AZF1, S947BXXS4AZG5, S942QOPU1AZDE, S942U1UES4AZG3, S942USQS4AZG3, S947USQS4AZG3, S9480ZHS4AZG1, S948BXXS4AZG5/6, S948NKSS4AZG3, S948U1UES2AZE1, S948USQS4AZG3.
Les OTA inconnues retombent exactement comme le params.c amont : d'abord le
build exact, puis même modèle + CSC de 3 caractères (réutilisation d'OTA),
puis la dernière entrée du même appareil (signalée comme non vérifiée), sinon
échec fermé (l'application affiche UNSUPPORTED et la couche native se
termine avec le code 2). Les modèles totalement inconnus sont refusés -
jamais forcés.
Un grand bouton - Root my S26 - exécute tout le pipeline et raconte le déroulement dans la carte Output :
adb shell du README). La
permission est demandée une fois au lancement (et de nouveau si le serveur
redémarre) ; le flux Root attend l'autorisation au lieu d'abandonner. Si le
serveur est arrêté, l'application ouvre le gestionnaire Shizuku pour que
vous puissiez le démarrer, puis retombe sur le shell intégré à
l'application. Ajouter l'application à la liste d'autorisation de Shizuku
supprime entièrement l'invite.preload.so, su_daemon, ksud vers
/data/local/tmp (preload.so, cve-2026-43499-root, ksud) et leur
applique chmod. Si vous avez déjà adb pushé les fichiers selon le
README amont, ils sont récupérés sur place.env LD_PRELOAD=/data/local/tmp/preload.so sh (le constructeur du .so
exécute la chaîne et fait _exit ; stdout est le journal de l'exploit),
jusqu'à 5 tentatives - la course est probabiliste. Un commutateur
BOOT_FORCE=1 est disponible, mais redémarrer est plus sûr.id rapporte uid=0 via n'importe
quel canal : d'abord la socket du démon temporaire, puis su de style
KernelSU. Cela importe car en cas de succès complet, su_daemon
supprime sa socket et se termine par conception (transfert vers
KernelSU) - une socket temporaire morte avec un su fonctionnel signifie
rooté, pas cassé. Affiche la fin du journal de revendication de démarrage
et indique rooté / des conseils sur le code de sortie.En dessous : une seule ligne champ de commande + Exécuter en tant que root (commandes ponctuelles
via le protocole C du démon su ; le PTY interactif est hors périmètre pour la v1),
et un petit lien Réinitialiser qui efface /data/local/tmp/ghostlock-boot.log
afin qu'une exécution puisse être retentée sans redémarrer (l'amont avertit que cela peut provoquer un panic -
le redémarrage est la voie sûre).
exploit/ vendored upstream (Makefile + src/, authoritative)
ksud upstream prebuilt KernelSU loader (ARM64 PIE, also in assets)
app/src/main/assets/ksud staged copy shipped in the APK
app/src/main/assets/ + preload.so / su_daemon after stage-assets.sh
app/src/main/cpp/ optional CMake rebuild of preload.so from exploit/src
app/src/main/java/indev/ghostlock/s26/
MainActivity.kt UI (device / stage / run / shell / boot guard)
ParamsTable.kt series table mirror (17 builds, 3 lines, 5 codenames)
DeviceCompat.kt Build.* identity + series verdict
ShellRunner.kt Shizuku (uid 2000) + local fallback, staging
SuClient.kt /data/local/tmp/temp_su.sock 'C'-mode client
GhostlockManager.kt exit-code interpreter (0/1/2/3/4)
PORTING.upstream.md porting notes (new firmware = new device_map row)
Prérequis : Android Studio (JBR 21) / SDK 35 / NDK r26+ / CMake 3.22.1 / JDK 17.
# 1. Build the native payloads with the NDK (upstream flow):
cd exploit && make preload
# -> build/bin/preload.so, build/embed/su_daemon_aarch64_pie
# 2. Stage them into the APK assets:
./stage-assets.sh
# 3. Build the app:
./gradlew :app:assembleDebug
# -> app/build/outputs/apk/debug/app-debug.apk
ksud est déjà intégré (ksud + app/src/main/assets/ksud), donc les étapes 1–2 ne produisent que les deux sorties NDK. La cible CMake dans app/src/main/cpp/CMakeLists.txt peut en outre reconstruire libpreload.so à partir des mêmes sources à l'intérieur de l'APK, comme solution de repli.
Le workflow .github/workflows/build.yml compile l'application adaptée au nom de code de l'appareil cible / au type de processeur - aucun SDK, NDK ou Docker n'est nécessaire en local. Forkez le dépôt, puis depuis l'onglet Actions du dépôt → GhostLock-S26 Device Build → Run workflow, puis définissez :