
GhostLock (CVE-2026-43499) app para la serie Galaxy S26
indev.ghostlock.s26)Wrapper de Android en un clic para polygraphene/ghostlock-s26: GhostLock (CVE-2026-43499) portado a la serie completa Samsung Galaxy S26 (Android 16 / GKI 6.12). Un solo APK, tres líneas de kernel, coincidencia de parámetros en tiempo de ejecución: sin variantes de la app por compilación.
Úsalo solo en dispositivos que poseas o para los que tengas autorización explícita de prueba. El root temporal desaparece al reiniciar. Una segunda ejecución del exploit en el mismo arranque puede colgar el dispositivo: reinicia antes de reintentar.
Aviso legal: experimentar con este software implica exploits de kernel de bajo nivel, root y reclamaciones en tiempo de arranque. Se proporciona TAL CUAL, sin garantía de ningún tipo. Lo usas enteramente bajo tu propio riesgo; el autor no es responsable de dispositivos inutilizados, atrapados en bucles de arranque o dañados de cualquier otra forma, ni de ninguna pérdida de datos, garantías anuladas o daños derivados de su uso.
El exploit hace la coincidencia por línea de kernel, no por compilación
individual (exploit/src/params_table.c es la fuente autoritativa; ParamsTable.kt
la replica solo para el veredicto de la UI):
| Nombre en clave del dispositivo | Nombre comercial | SoC | Línea de kernel |
|---|---|---|---|
| m1q | Galaxy S26 (SM-S942x) | Snapdragon | cn o intl (según CSC) |
| m2q | Galaxy S26+ (SM-S947x) | Snapdragon | cn o intl (según CSC) |
| m3q | Galaxy S26 Ultra (SM-S948x) | Snapdragon | cn o intl (según CSC) |
| m1s | Galaxy S26 (SM-S942B) | Exynos | exynos |
| m2s | Galaxy S26+ (SM-S947B) | Exynos | exynos |
Compilaciones probadas (17): S9420ZCS4AZG1, S9470ZCS4AZG1, S9480ZCS3AZF1, S9480ZCS4AZG1, S942BXXS4AZG5, S947BXXS3AZF1, S947BXXS4AZG5, S942QOPU1AZDE, S942U1UES4AZG3, S942USQS4AZG3, S947USQS4AZG3, S9480ZHS4AZG1, S948BXXS4AZG5/6, S948NKSS4AZG3, S948U1UES2AZE1, S948USQS4AZG3.
Las OTA desconocidas recurren exactamente igual que el params.c original: primero
la compilación exacta, luego el mismo modelo + CSC de 3 caracteres (reutilización de OTA),
después la última entrada del mismo dispositivo (marcada como no verificada), y si no,
fallo cerrado (la app muestra UNSUPPORTED y la capa nativa sale con código 2).
Los modelos completamente desconocidos se rechazan: nunca se fuerzan.
Un único botón grande - Root my S26 - ejecuta todo el proceso y lo narra en la tarjeta Output:
adb shell del README). El permiso se solicita
una vez al iniciar (y de nuevo si el servidor se reinicia); el flujo de Root espera
la concesión en lugar de abortar. Si el servidor está caído, la app abre el gestor
de Shizuku para que puedas iniciarlo, y luego recurre al shell integrado de la app.
Añadir la app a la lista de permitidos de Shizuku elimina el aviso por completo.preload.so, su_daemon, ksud a /data/local/tmp
(preload.so, cve-2026-43499-root, ksud) y les aplica chmod. Si ya
hiciste adb push de los archivos según el README original, se recogen
en su sitio.env LD_PRELOAD=/data/local/tmp/preload.so sh (el constructor del .so ejecuta
la cadena y hace _exit; stdout es el registro del exploit), hasta 5 intentos -
la carrera es probabilística. Hay un interruptor BOOT_FORCE=1 disponible, pero
reiniciar es más seguro.id informa uid=0 a través de cualquier canal:
primero el socket del demonio temporal, luego su al estilo KernelSU. Esto importa porque en
un éxito completo su_daemon desvincula su socket y sale por diseño
(traspaso a KernelSU) - un socket temporal muerto con su funcionando significa
rooteado, no roto. Imprime la cola del registro de reclamación de arranque e informa
sobre rooteado / consejos según el código de salida.Debajo de eso: una única fila de campo de comando + Ejecutar como root (comandos de un solo uso
a través del protocolo C del daemon su; el PTY interactivo está fuera del alcance de la v1),
y un pequeño enlace Restablecer que borra /data/local/tmp/ghostlock-boot.log
para que se pueda reintentar una ejecución sin reiniciar (upstream advierte que esto puede provocar un pánico -
reiniciar es la vía segura).
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)
Requisitos: 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 ya está incluido en el repositorio (ksud + app/src/main/assets/ksud), por lo que los pasos 1–2
solo producen las dos salidas del NDK. El objetivo de CMake en
app/src/main/cpp/CMakeLists.txt puede además reconstruir libpreload.so
a partir de las mismas fuentes dentro del APK como respaldo.
El flujo de trabajo .github/workflows/build.yml
compila la aplicación adaptada al nombre en clave del dispositivo objetivo / tipo de procesador - no se
necesita SDK, NDK ni Docker localmente. Haz un fork del repositorio y, desde la pestaña Actions del repositorio →
GhostLock-S26 Device Build → Run workflow, configura: