
CVE-2026-98260 के लिए Android फ्रंट एंड: Shizuku के माध्यम से root shell + KernelSU late-load
CVE-2026-98260 (POSIX CPU टाइमर use-after-free) के लिए Android फ़्रंट एंड, जो CVE-2026-64560 जैसी ही बग श्रेणी का है। एक टैप आपको रूट शेल देता है और फिर देर से KernelSU (u:r:ksu:s0) लोड करता है।
यहाँ स्वयं एक्सप्लॉइट शामिल नहीं है। यह रिपॉज़िटरी उसके चारों ओर का ऐप शेल है: UI, स्टेट डिटेक्शन और एक साधारण ऐप से शेल-डोमेन एक्सप्लॉइट चलाने के लिए आवश्यक Shizuku प्लंबिंग।
एक ऐप untrusted_app के रूप में चलता है और /sys/kernel/tracing नहीं पढ़ सकता, जिसकी एक्सप्लॉइट को अपने लीक और ट्रिगर के लिए आवश्यकता होती है। इसलिए TimerRoot एक Shizuku उपयोगकर्ता सेवा शुरू करता है, जिसे Shizuku शेल उपयोगकर्ता (uid 2000, u:r:shell:s0) के रूप में चलाता है। एक्सप्लॉइट बाइनरी उसी प्रोसेस के अंदर निष्पादित होती है, इसलिए इसे वही वातावरण मिलता है जो इसे adb shell से मिलता।
MainActivity (untrusted_app)
└─ Shizuku user service (uid 2000, u:r:shell:s0)
├─ extracts assets/timer to /data/local/tmp/timer
└─ runs it; on success keeps /system/bin/sh alive
minSdk 30), arm64Load KernelSU
पथ के लिए6.12.69-android16-6-g242e1a07f878-ab15865446-4k को लक्षित करती है; नीचे देखें।TimerRoot संकलित एक्सप्लॉइट को app/src/main/assets/timer पर अपेक्षित करता है:
git clone https://github.com/YuKongA/CVE-2026-98260
cp CVE-2026-98260/timer/timer app/src/main/assets/timer
or
scripts/fetch-timer.ps1
बाइनरी को इसके लेखकों द्वारा MIT लाइसेंस प्रदान किया गया है; इसका उपयोग केवल उसी हार्डवेयर पर करें जिसका आप स्वामी हैं, और केवल तब जब आपका कर्नेल उस बिल्ड से मेल खाता हो जिस पर इसे पोर्ट किया गया था।
प्रोजेक्ट खोलें और बिल्ड करें, या:
./gradlew assembleDebug
परियोजना के लिए Android SDK की आवश्यकता है, जिसमें platform 36 और build-tools 36 हों। Shizuku API को Maven (dev.rikka.shizuku:api) से प्राप्त किया जाता है।
scripts/build.ps1 केवल SDK, javac, d8, aapt2 और apksigner की सहायता से एक APK बनाता और हस्ताक्षरित करता है। यह कुछ भी vendor नहीं करता: यह ऐप को Shizuku API स्रोतों के साथ संकलित करता है, इसलिए पहले उन्हें क्लोन करें:
git clone https://github.com/RikkaApps/Shizuku-API
scripts/build.ps1 -Sdk "C:\Users\<you>\AppData\Local\Android\Sdk"
TimerRoot कुछ भी कर सके, इससे पहले Shizuku चल रहा होना चाहिए: यह वह प्रक्रिया है जो exploit को आवश्यक shell उपयोगकर्ता प्रदान करती है। Shizuku हर रीबूट पर बंद हो जाता है, इसलिए यह हर बार पहला कदम है।
वायरलेस डिबगिंग (पहली पेयरिंग के बाद कोई PC नहीं)
USB के माध्यम से
फ़ोन कनेक्टेड होने और USB डिबगिंग अधिकृत होने पर:
adb shell sh /sdcard/Android/data/moe.shizuku.privileged.api/start.sh
नए Shizuku रिलीज़ में वह स्क्रिप्ट अब शामिल नहीं हो सकती; यदि यह अनुपस्थित है, तो ऊपर दिए गए वायरलेस डिबगिंग मार्ग का उपयोग करें।
जाँचें कि सर्वर चालू है:
adb shell ps -A | grep shizuku_server
# shell 12345 1 ... shizuku_server
ps में केवल moe.shizuku.privileged.api दिखना इसका मतलब है कि मैनेजर ऐप खुला है लेकिन
सर्वर नहीं चल रहा है; जब तक यह नहीं चलेगा, एक्सप्लॉइट शुरू नहीं हो सकता।
Not connected दिखाता है, तो दोबारा अनुरोध करने के लिए टूल्स पंक्ति में Shizuku दबाएँ।Prepare assets/timer को /data/local/tmp/timer में निकालता है:
installed 307192 bytes
एक टैप। ऐप एस्केलेट करता है, सेवा के भीतर एक uid=0 शेल रखता है, और फिर
स्वचालित रूप से KernelSU लेट-लोड शुरू करता है:
[child] woke uid=0
root shell ready - loading KernelSU...
Loading KernelSU... 12s
KSU_LOADED
कार्ड Root shell -> Jailbreak mode (u:r:ksu:s0) में जाता है। यदि
KernelSU चरण अपनी रेस हार जाता है, तो कार्ड KernelSU failed के साथ लाल हो जाता है, और
पुनः प्रयास करने से पहले आपको रीबूट करना चाहिए।
Reboot पिल का उपयोग करें। यह सेवा (svc power reboot) के माध्यम से जाता है, इसलिए यह
तब भी काम करता है जब अभी तक कोई रूट शेल खुला न हो। रीबूट करना पार्क किए गए प्रोसेस को हटाने
और KernelSU को अनलोड करने का एकमात्र स्वच्छ तरीका भी है।
रीबूट करने के बाद, चरण 1 से फिर से शुरू करें: Shizuku बंद है और KernelSU चला गया है।
स्टेटस कार्ड दर्शाता है कि वास्तव में क्या लाइव है, जिसे su -c id चलाकर और
u:r:ksu:s0 की जाँच करके पता लगाया जाता है:
| कार्ड | अर्थ |
|---|---|
| Not connected | Shizuku नहीं चल रहा है / बाउंड नहीं है |
| Ready | Shizuku कनेक्टेड, अभी तक कोई रूट नहीं |
| Root shell | uid=0, u:r:shell:s0 |
| Jailbreak mode | KernelSU लोडेड, su u:r:ksu:s0 में काम करता है |
KernelSU failed और base calibration failedfake-credential चरण को कर्नेल लीनियर-मैप बेस की आवश्यकता होती है, जिसे एक्सप्लॉइट page-alloc ट्रेस इवेंट्स से प्राप्त करता है। यह 4 KB पेज मानता है:
[base] made=512 best=0 count=0
[-] base calibration failed
डिवाइस का पेज साइज़ जाँचें:
adb shell getconf PAGE_SIZE
4096: लेआउट किसी अन्य कारण से भिन्न है; uname -r, मॉडल और पूरा लॉग एकत्र करें और इसे अपस्ट्रीम पर रिपोर्ट करें।16384: यह एक्सप्लॉइट इस डिवाइस पर जैसा है वैसा काम नहीं कर सकता। इसे 16 KB पेजों के लिए फिर से बनाना होगा (पेज शिफ्ट, मास्क और ऑर्डर साइज़), जो कि एक ऐप सेटिंग के बजाय पोर्टिंग का काम है।रूट शेल ऐसे डिवाइस पर फिर भी सफल हो सकता है, क्योंकि उस पथ को केवल लीक हुए क्रेडेंशियल पते की आवश्यकता होती है, लीनियर-मैप बेस की नहीं।
Not connected पर ही रहता हैShizuku नहीं चल रहा है। इसे फिर से शुरू करें (यह हर रीबूट पर बंद हो जाता है) और चरण 1 देखें।
Prepare कुछ भी रिपोर्ट नहीं करताकोई सिस्टम डायलॉग ऐप को ढक रहा हो सकता है (Shizuku पेयरिंग, OPPO इंस्टॉलर स्कैन)। इसे बंद करें और फिर से Prepare दबाएँ।
यह एक कर्नेल एक्सप्लॉइट है। कुछ भी दबाने से पहले इसे पढ़ें।
app/src/main/java/com/kpgc/timerroot/MainActivity.java UI and state
app/src/main/java/com/kpgc/timerroot/UserService.java runs as the shell user
app/src/main/aidl/com/kpgc/timerroot/IUserService.aidl service interface
app/src/main/assets/timer exploit binary (not in git)
scripts/build.ps1 Gradle-free build