
Samsung Galaxy S25 Ultra (SM-S938B) के लिए Android रूट टूल जो बूट पर KernelSU के माध्यम से स्वचालित रूप से रूट प्राप्त करने के लिए DirtyFrag CVE-2026-43284 और CVE-2026-43499 को चेन करता है।
diabl0w/DFRoot का fork, विशेष रूप से Samsung Galaxy S25 Ultra (SM-S938B / pa3q) के लिए अनुकूलित, इंटरफ़ेस और रन आउटपुट पूरी तरह चीनी में।
दो चैनल, एक इंटरफ़ेस:
योजना भेद्यता विशेषता तेज़ चैनल DirtyFrag (CVE-2026-43284) अपस्ट्रीम DFRoot वाला, कुछ सेकंड से कुछ दसियों सेकंड मैनुअल CVE-2026-43499 संभाव्य, तीन-चरणीय सीढ़ी, अधिकतम दसियों मिनट डिफ़ॉल्ट "स्वचालित": पहले तेज़ चैनल चलाएँ, विफल होने पर स्वचालित रूप से मैनुअल योजना से जुड़ें।
एक पंक्ति में: बूट पर स्वचालित रूप से root प्राप्त करें। प्रत्येक बूट पर पहले कुछ सेकंड का तेज़ चैनल आज़माएँ; विफल होने पर, स्वचालित रूप से मैनुअल चैनल से जुड़ें, "तेज़ → स्थिर → धैर्य" के अनुसार तीन चरणों में पुनः प्रयास करें।
root प्राप्त करने के बाद स्वचालित रूप से दो cmd connectivity भी चलेंगी (Samsung "सॉफ़्टवेयर पैकेज इंस्टॉलर" के विज्ञापन हटाने के लिए),
कमांड, आउटपुट, एग्ज़िट कोड सब इंटरफ़ेस लॉग में दिखेंगे —— देखें खंड 5 "इंस्टॉलर विज्ञापन सेटिंग"।
v1.8 से ये दो कमांड KernelSU की बूट स्क्रिप्ट के रूप में लिखी जाएँगी, आगे हर बूट पर KernelSU स्वयं root के रूप में
निष्पादित करेगा, ऐप खोलने या प्राधिकरण पॉपअप की आवश्यकता नहीं।
Cannot run program "su": error=2, No such file or directory ठीक किया:
v1.8 में एक अतिरिक्त रीबूट से बचने के लिए ksud को --soft-reboot देना बंद कर दिया गया था; लेकिन KernelSU का su वास्तव में
कर्नेल मॉड्यूल द्वारा post-fs-data चरण में ही /system/bin/su पर माउंट होता है, ksud का late-load केवल
late-load / post-mount / service / boot-completed चरण चलाता है (KernelSU स्रोत
userspace/ksud/src/late_load.rs) —— फ्रेमवर्क को रीबूट किए बिना, इस बूट में यह माउंट पॉइंट कभी प्रकट नहीं होगा,
ऐप में su -c … निश्चित रूप से error=2 देगा। ये दोनों समस्याएँ एक ही मूल कारण हैं;KsudChannel) —— APK में एक अतिरिक्त ksud
(libksud.so, jniLibs/arm64-v8a/ में रखा, nativeLibraryDir में इंस्टॉल, ऐप सीधे execve कर सकता है),
libksud.so debug su से root shell खोलें, कमांड उसके stdin में लिखें। प्रिविलेज एस्केलेशन कर्नेल के
ioctl(KSU_IOCTL_GRANT_ROOT) से होता है, /system/bin/su पर निर्भर नहीं, प्राधिकरण पॉपअप नहीं, सिस्टम फ्रेमवर्क रीबूट भी नहीं;* root 通道:helper=…,ksud=可用,su=… दिखेगी, कहाँ अटका है एक नज़र में दिखेगा;su चलाने से पहले /data/adb/ksu/bin, /debug_ramdisk, /data/adb/magisk, /data/adb/ap/bin
को PATH में डालें, SU_PATHS भी 8 तक बढ़ाया (कुछ KernelSU वेरिएंट केवल इन निर्देशिकाओं में su रखते हैं)।--soft-reboot नहीं दिया जाता। पहले यह पैरामीटर ksud को इंस्टॉल के बाद
सिस्टम फ्रेमवर्क एक बार रीबूट कराता था —— उपयोगकर्ता को "बूट के बाद फिर से रीबूट" दिखता था; और भी बुरा, यह रीबूट
ऐप प्रोसेस और उसके चल रहे "इंस्टॉलर विज्ञापन सेटिंग" को बाधित कर देता था;su से चलाने पर निर्भर नहीं
(उस समय KernelSU तैयार नहीं होता, वास्तविक डिवाइस पर हर बूट पर विफल होता था, मैन्युअल रूप से KernelSU खोलकर ऐप खोलना पड़ता था)।
अब वही दो कमांड /data/adb/service.d/dfroot-ads.sh में लिखी जाती हैं, KernelSU हर बूट पर
root के रूप में निष्पादित करता है —— ऐप से नहीं, su से नहीं, किसी प्राधिकरण पॉपअप की आवश्यकता नहीं;cmd connectivity चलेंगी,
कमांड, आउटपुट, एग्ज़िट कोड सब इंटरफ़ेस लॉग में दिखेंगे (सफल निष्पादन पर निश्चित रूप से आउटपुट होगा);अपस्ट्रीम DFRoot का अंतर्निहित, सारा कोड app/src/main/jni/ में (exp.c + दो शेलकोड खंड +
dirtyfrag-lkm/ में कर्नेल मॉड्यूल), libexp.so में कंपाइल होकर ऐप द्वारा सीधे कॉल:
splice() से रीड-ओनली फ़ाइल का page cache बदलें;/vendor/lib64/libstagefrighthw.so में लिखें फिर finit_module से लोड करें,
SELinux को permissive सेट करें;libc.so / libc++.so को हुक करें, modprobe के डोमेन से अंतर्निहित ksud लॉन्च करें,
late-load KernelSU।तेज़ (कुछ सेकंड), कीमत यह है कि यह /dev/df में "इस राउंड में पहले से तैनात" का निशान छोड़ता है,
और इसका ksud इंस्टॉल पथ मैनुअल वाले से अलग है (देखें खंड 7)।
तीनों बाइनरी पहले से कंपाइल हैं (बाइट-दर-बाइट अपरिवर्तित):
| फ़ाइल | स्थान | कार्य |
|---|---|---|
libcve43499root.so | jniLibs/arm64-v8a/ | helper, निष्पादन योग्य ELF, ऐप सीधे execve, Shizuku की आवश्यकता नहीं |
cve-2026-43499-app.so | assets/payloads/ | payload, helper द्वारा dlopen के बाद भेद्यता निष्पादित |
ksud-s25u-kdp | assets/payloads/ | KernelSU मुख्य भाग (ksud + अंतर्निहित kernelsu.ko) |
1. helper --run-payload <payload> <helper> <log> root प्राप्त करें (संभाव्य)
2. helper -c "cp ksud …" ksud को /data/local/tmp में रखें
3. helper --late-load bind mount /system/bin/logcat,
फिर exec "logcat late-load …" KernelSU इंस्टॉल करें
सफलता निर्धारण: लॉग में एक साथ exploit completed और done=1 root=1 दिखें।
इंटरफ़ेस की "मैनुअल" योजना यही चलाती है ("स्वचालित" योजना तेज़ चैनल विफल होने पर भी इसे चलाती है)।
मैन्युअल बटन क्लिक (इंटरफ़ेस पर)
└─ वर्तमान प्रोसेस में ही चलाएँ: योजना "स्वचालित" = तेज़ चैनल → मैनुअल; योजना "मैनुअल" = सीधे मैनुअल
बूट स्वचालित (BootReceiver, दो ब्रॉडकास्ट प्रत्येक बार)
│
├─ इस राउंड में root मिल चुका (क्रेडेंशियल इंस्टॉल, या अन्य root अभी भी)?
│ ├─ इंस्टॉलर विज्ञापन सेटिंग अभी नहीं हुई → एक बार पूरक करें, समाप्त
│ └─ पहले ही हो चुकी → छोड़ें
├─ फोरग्राउंड सेवा चल रही / पिछला राउंड अभी समाप्त नहीं? → छोड़ें
│
├─ चरण 1 · तेज़ चैनल DirtyFrag (कुछ सेकंड से कुछ दसियों सेकंड, सीधे ब्रॉडकास्ट में)
│ ├─ सफल → चरण 3
│ ├─ विफल लेकिन कोई निशान नहीं (/dev/df मौजूद नहीं) → चरण 2 जारी रखें
│ └─ विफल लेकिन पहले से तैनात (/dev/df मौजूद) → रोकें, फ़ोन रीबूट करने का संकेत
│
├─ चरण 2 · मैनुअल योजना CVE-2026-43499 (तीन-चरणीय सीढ़ी, फोरग्राउंड सेवा को सौंपें)
│ ├─ सफल → चरण 3
│ └─ तीनों चरण विफल → इस बार और प्रयास नहीं, अगले बूट की प्रतीक्षा
│
└─ चरण 3 · इंस्टॉलर विज्ञापन सेटिंग (दो cmd connectivity, देखें खंड 5)
├─ सफल → साथ ही KernelSU बूट स्क्रिप्ट (/data/adb/service.d/) में लिखें, आगे हर बूट पर स्वचालित निष्पादन
└─ विफल (अभी अनलॉक नहीं / KernelSU अभी तैयार नहीं) → फोरग्राउंड सेवा हर 30 सेकंड में पुनः प्रयास, अधिकतम 5 मिनट