
Herramienta de root para Android para Samsung Galaxy S25 Ultra (SM-S938B) que encadena DirtyFrag CVE-2026-43284 y CVE-2026-43499 para obtener root automáticamente al arrancar mediante KernelSU.
Fork de diabl0w/DFRoot, adaptado específicamente para Samsung Galaxy S25 Ultra (SM-S938B / pa3q), con interfaz y salida de ejecución completamente en chino.
Dos cadenas, una interfaz:
Esquema Vulnerabilidad Características Vía rápida DirtyFrag (CVE-2026-43284) La del DFRoot original, de segundos a decenas de segundos Manual CVE-2026-43499 Probabilística, escalera de tres rondas, hasta más de diez minutos Por defecto "Automático": primero ejecuta la vía rápida, si no funciona, encadena automáticamente el esquema manual.
En una frase: obtener root automáticamente al arrancar. Cada arranque intenta primero la vía rápida durante unos segundos; si no funciona, encadena automáticamente la cadena manual, reintentando tres rondas siguiendo "rápido → estable → paciente".
Tras obtener root, también ejecuta automáticamente dos comandos cmd connectivity (para eliminar los anuncios del "Instalador de paquetes" de Samsung),
los comandos, la salida y el código de salida se muestran igualmente en el registro de la interfaz — véase la sección cinco "Configuración de anuncios del instalador".
A partir de v1.8, estos dos comandos se escriben como script de arranque de KernelSU, y en cada arranque posterior KernelSU los ejecuta por sí mismo como root,
sin necesidad de abrir la aplicación ni de ventanas de autorización.
Cannot run program "su": error=2, No such file or directory:
v1.8, para no reiniciar una vez más, eliminó el --soft-reboot pasado a ksud; y el su de KernelSU precisamente es
montado por el módulo del kernel en la fase post-fs-data en /system/bin/su, el late-load de ksud solo ejecuta
las fases late-load / post-mount / service / boot-completed (código fuente de KernelSU
userspace/ksud/src/late_load.rs) —— sin reiniciar el framework, en este arranque ese punto de montaje nunca aparecerá,
y su -c … en la aplicación dará inevitablemente error=2. Ambos problemas tienen la misma causa raíz;KsudChannel) —— el APK incluye una copia adicional de ksud
(libksud.so, ubicado en jniLibs/arm64-v8a/, instalado en nativeLibraryDir, la App puede hacer execve directamente),
usa libksud.so debug su para abrir un shell root, y los comandos se escriben en su stdin. La elevación de privilegios va por el
ioctl(KSU_IOCTL_GRANT_ROOT) del kernel, sin depender de /system/bin/su, sin ventanas de autorización y sin reiniciar el framework del sistema;* root 通道:helper=…,ksud=可用,su=…, para ver de un vistazo dónde se atasca;su, se añaden /data/adb/ksu/bin, /debug_ramdisk, /data/adb/magisk, /data/adb/ap/bin
al PATH, y SU_PATHS se amplía a 8 entradas (algunas variantes de KernelSU solo colocan su en estos directorios).--soft-reboot a ksud. Antes este parámetro hacía que ksud, tras instalar,
reiniciara el framework del sistema una vez —— lo que el usuario veía era "tras arrancar, se reinicia solo otra vez"; peor aún, este reinicio
interrumpía el proceso de la aplicación junto con la "Configuración de anuncios del instalador" que estaba ejecutando;su en el momento del arranque
(en ese momento KernelSU aún no está listo, en dispositivos reales fallaba en cada arranque, y había que abrir manualmente KernelSU y luego la aplicación
para que funcionara). Ahora los mismos dos comandos se escriben en /data/adb/service.d/dfroot-ads.sh, y KernelSU lo ejecuta como root en cada arranque
—— sin pasar por la aplicación, sin pasar por su, sin necesidad de ninguna ventana de autorización;cmd connectivity,
y los comandos, la salida y el código de salida se muestran todos en el registro de la interfaz (una ejecución exitosa siempre tiene salida);La que viene con el DFRoot original, todo el código está en app/src/main/jni/ (exp.c + dos fragmentos de shellcode +
el módulo del kernel en dirtyfrag-lkm/), compilado como libexp.so y llamado directamente por la App:
splice() para modificar la page cache de archivos de solo lectura;/vendor/lib64/libstagefrighthw.so y luego cargarlo con finit_module,
poniendo SELinux en permissive;libc.so / libc++.so, aprovechar el dominio de modprobe para lanzar el ksud incluido,
y hacer late-load de KernelSU.Rápido (unos segundos), el precio es que deja en /dev/df la huella de "ya fortificado en esta ronda",
y además su ruta de instalación de ksud es distinta a la de la cadena manual (véase la sección siete).
Los tres binarios están precompilados (byte a byte sin modificar):
| Archivo | Ubicación | Función |
|---|---|---|
libcve43499root.so | jniLibs/arm64-v8a/ | helper, ELF ejecutable, la App hace execve directamente, no necesita Shizuku |
cve-2026-43499-app.so | assets/payloads/ | payload, el helper lo dlopen y luego ejecuta la vulnerabilidad |
ksud-s25u-kdp | assets/payloads/ | KernelSU en sí (ksud + kernelsu.ko embebido) |
1. helper --run-payload <payload> <helper> <log> obtener root (probabilístico)
2. helper -c "cp ksud …" colocar ksud en /data/local/tmp
3. helper --late-load bind mount /system/bin/logcat,
luego exec "logcat late-load …" para instalar KernelSU
Criterio de éxito: en el registro aparecen simultáneamente exploit completed y done=1 root=1.
El esquema "Manual" de la interfaz ejecuta esta cadena (el esquema "Automático", cuando la vía rápida no funciona, también la ejecuta a continuación).
Pulsar el botón manualmente (en la interfaz)
└─ Se ejecuta en el proceso actual: esquema "Automático" = vía rápida → manual; esquema "Manual" = manual directamente