
Lenovo Legion Y700 2023 (TB320FC)용 인메모리 커널 권한 상승으로, Qualcomm Adreno GPU SMMU 취약점인 CVE-2025-21479를 악용하며 ReSukiSU 루트 관리 기능을 제공합니다.
English | 简体中文
**Lenovo Legion Y700 2023 (TB320FC)**를 위한 인메모리 커널 권한 상승으로, CVE-2025-21479(Qualcomm Adreno GPU SMMU 취약점)를 익스플로잇하며, ReSukiSU가 완전한 루트 관리를 제공합니다.
부트로더 언락 없음. 플래싱 없음. 활성화에 PC 불필요.
⚠️ 소유한 기기에서의 승인된 보안 연구용입니다. 면책 조항을 참조하세요.
이 프로젝트의 모든 오프셋과 동작은 다음 기기에 맞춰 조정되었습니다. 재조정 없이 다른 모델/ROM에서 작동할 것으로 기대하지 마세요 (exploit/device_info.txt 참조).
| 모델 | Lenovo Legion Y700 2023 (TB320FC) / TB320FC_PRC |
| SoC | Qualcomm SM8475 (Snapdragon 8+ Gen 1, Adreno 730) |
| 시스템 | ZUXOS 1.1.350 / Android 15 (SDK 35) |
| 빌드 | AQ3A.240812.002 (TB320FC_CN_OPEN_USER_Q00031.0_V_ZUXOS_1.1.350_ST_250418) |
| 커널 | 5.10.209-android12-9-gef44381c3e04-ab50 |
| 보안 패치 | 2025-03-05 |
| 부트로더 | 잠김 (이 프로젝트는 이를 언락하지 않음) |
2026-09 기준 위 펌웨어에서 작동이 검증되었습니다.
| 기능 | 구현 |
|---|---|
| 권한 상승 | cheese 익스플로잇: KGSL SMMU 버그 → GPU 임의 물리적 R/W → 인메모리 루트 (uid 0 + 전체 caps) |
| 루트 관리 | ReSukiSU (KernelSU 포크)가 late-load 모드로 kernelsu.ko를 로드; su는 커널 내 훅(u:r:ksu:s0)이 제공 |
| SELinux | 활성화 후 Enforcing으로 복원 (ReSukiSU 정책 규칙은 계속 적용됨) |
| 원탭 UX | 익스플로잇 + ksud가 내장된 RootActivator APK; 부팅 후 한 번의 탭 |
| 자동 복구 (선택) | 부팅 트리거 자가 복구 체인: 적응형 부하 게이트 트리거 → cheese → 루트 파이프라인 → 선택적 hosts/Vector. 기본값 꺼짐 (com.poc.roottool.CONFIG) |
| Xposed 모듈 | NeoZygisk (ptrace zygote 인젝션) + Vector를 통해 지원 |
| 지속성 | 설계상 없음 (인메모리): 재부팅 후마다 재활성화 필요 (~3-4분; 또는 자동 복구 체인 활성화) |
| RootActivator (활성화됨) | ReSukiSU (작동 중, 모듈 2개) |
|---|---|
![]() | ![]() |
왼쪽: 성공적으로 활성화된 후의 RootActivator — SELinux Enforcing, kernelsu 로드됨, su 사용 가능.
오른쪽: ReSukiSU 관리자 — 모듈 2개(NeoZygisk + Vector)와 함께 LKM 모드 작동 중.
RootActivator APK
│
├─ libcheese.so ── KGSL SMMU exploit (CVE-2025-21479)
│ 1. Adreno 730 microcode access-check flaw (SDS packet mistaken for RingBuffer)
│ 2. Fake CP_SMMU_TABLE_UPDATE overwrites GPU TTBR0 → arbitrary physical R/W
│ 3. Zero selinux_state.enforcing; dump kernel from fixed PA 0xA8000000,
│ parse kallsyms from the raw image (SM8475 has no physical KASLR)
│ 4. Patch __do_sys_capset with an escalation shellcode
│ (prepare_kernel_cred(0) + commit_creds + clear TIF_SECCOMP);
│ forked child calls capset() → uid 0 + full caps
│
└─ libksud.so (ReSukiSU) ── late-load mode
1. kernelsu.ko loaded from ksud's embedded assets with manual relocation
(does not rely on kernel symbol exports)
2. install → /data/adb/ksu (ksud/busybox/bootctl)
3. su channel online: /system/bin/su → kernel hook redirect → u:r:ksu:s0
4. setenforce 1 — Enforcing restored, policy rules already injected by the ko
주요 엔지니어링 포인트
insmod kernelsu.ko는 실패합니다. ReSukiSU의 late-load는 심볼을 자체적으로 해결하여 정상적으로 로드됩니다.소스에서 빌드하거나(Building 참조) GitHub Releases 페이지에서 APK를 받으세요(저장소에는 저장되지 않음).
ReSukiSU Releases에서 다운로드하여 매니저 APK를 설치하세요.
su -c 'sh /data/adb/modules/zygisksu/post-fs-data.sh'
이 저장소에는 PoC(익스플로잇)와 원탭 활성화 도구가 포함되어 있습니다. 커스텀 기기 레이어(디블로트 스크립트, 프라이버시 호스트 모듈, Xposed 스코프 도구, 브링업 헬퍼)는 별도의 비공개 아카이브에 트리 외부로 보관됩니다 — 이들은 의도적으로 이 저장소의 일부가 아닙니다. 자세한 내용: docs/ARCHITECTURE.md.
├── LICENSE / CHANGELOG.md
├── README.md / README.zh-CN.md
│
├── exploit/ the PoC — root acquisition (CVE-2025-21479)
│ ├── source/ cheese.c / kallsyms_lookup.c / adrenaline.h
│ ├── device_info.txt Target device parameters (offsets, verified facts)
│ ├── build.sh Build script (requires Android NDK)
│ └── README.md Boundary statement, runtime chain, known failure modes
│
├── app/ RootActivator — one-tap activator (all extras OFF by default)
│ ├── src/ BootReceiver / HealGuardService / HealConfig / MainActivity (Kotlin)
│ ├── assets/ selfheal.sh / waiter.sh / xposed-up.sh
│ ├── native/ libcheese.so + libksud.so (built from exploit/; see tools/fetch_assets.py)
│ ├── AndroidManifest.xml
│ ├── debug.keystore debug signing key used by the public APK
│ ├── build.py Build script (kotlinc + d8 + aapt2 + apksigner)
│ └── README.md App documentation
│
├── tools/ Build / inspection helpers
│ ├── fetch_assets.py Host: prepare native assets (exploit + ksud)
│ ├── status_check.sh On-device: root / module snapshot
│ └── check_mods.sh On-device: module inspection helper
├── docs/ Documentation (English)
│ ├── ARCHITECTURE.md Chains, engineering notes, root-cause records
│ ├── TROUBLESHOOTING.md Failure handling, success-rate data
│ └── VECTOR.md Xposed (NeoZygisk + LSPosed/Vector) setup
└── screenshots/ On-device PNG evidence
cd exploit
NDK=/path/to/android-ndk ./build.sh
# Produces ./cheese (arm64) → used as app/native/libcheese.so
cd app
python ../tools/fetch_assets.py # prepare native assets
python build.py # requires kotlinc + Android build-tools
# Produces RootActivator.apk
빌드에서 허용되는 환경 변수(자세한 내용은 app/build.py 참조):
KOTLIN_HOME, ANDROID_BUILD_TOOLS, ANDROID_JAR, KEYSTORE, JAVA_HOME.
fetch_assets.py는 추가로 libksud.so를 추출하기 위해 RESUKISU_APK(ReSukiSU arm64 APK 경로)가
필요합니다.
adb root는 사용할 수 없음(adbd cannot run as root in production builds)ksud soft-reboot를 사용하지 마십시오 — 디스플레이가
교착된 상태에서는 사용자 공간 시작(SurfaceFlinger ↔ ActivityManager)이 교착됩니다.
대신 NeoZygisk의 ptrace 주입을 사용하십시오