
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 기준 위 펌웨어에서 작동이 검증되었습니다.
| RootActivator (활성화됨) | ReSukiSU (작동 중, 모듈 2개) |
|---|---|
![]() | ![]() |
왼쪽: 성공적으로 활성화된 후의 RootActivator — SELinux Enforcing, kernelsu 로드됨, su 사용 가능.
오른쪽: ReSukiSU 매니저 — 모듈 2개(NeoZygisk + Vector)와 함께 LKM 모드 작동 중.
RootActivator APK
│
├─ libcheese.so ── KGSL SMMU 익스플로잇 (CVE-2025-21479)
│ 1. Adreno 730 마이크로코드 접근 검사 결함 (SDS 패킷이 RingBuffer로 오인됨)
│ 2. 가짜 CP_SMMU_TABLE_UPDATE가 GPU TTBR0를 덮어씀 → 임의 물리적 R/W
│ 3. selinux_state.enforcing을 0으로 설정; 고정 PA 0xA8000000에서 커널 덤프,
│ 원시 이미지에서 kallsyms 파싱 (SM8475에는 물리적 KASLR 없음)
│ 4. __do_sys_capset을 권한 상승 셸코드로 패치
│ (prepare_kernel_cred(0) + commit_creds + TIF_SECCOMP 클리어);
│ 포크된 자식이 capset() 호출 → uid 0 + 전체 caps
│
└─ libksud.so (ReSukiSU) ── late-load 모드
1. kernelsu.ko가 ksud의 내장 에셋에서 수동 재배치와 함께 로드됨
(커널 심볼 익스포트에 의존하지 않음)
2. install → /data/adb/ksu (ksud/busybox/bootctl)
3. su 채널 온라인: /system/bin/su → 커널 훅 리다이렉트 → u:r:ksu:s0
4. setenforce 1 — Enforcing 복원, 정책 규칙은 이미 ko에 의해 주입됨
주목할 만한 엔지니어링 포인트
insmod kernelsu.ko는 실패합니다. ReSukiSU의 late-load는 심볼을 스스로 해결하여 정상적으로 로드됩니다.소스에서 빌드하거나(빌딩 참조) GitHub Releases 페이지에서 APK를 받으세요(저장소에는 저장되지 않음).
ReSukiSU Releases에서 다운로드하여 매니저 APK를 설치하세요.
su -c 'sh /data/adb/modules/zygisksu/post-fs-data.sh'
├── LICENSE / CHANGELOG.md
├── README.md / README.zh-CN.md
├── exploit/ cheese 익스플로잇 (CVE-2025-21479, TB320FC로 포팅됨)
│ ├── source/ cheese.c / kallsyms_lookup.c / adrenaline.h
│ ├── device_info.txt 대상 기기 매개변수 (오프셋, 검증된 사실)
│ └── build.sh 빌드 스크립트 (Android NDK 필요)
├── app/ RootActivator (Kotlin, 수동 빌드, Gradle 없음)
│ ├── src/ MainActivity.kt (단일 파일, 코드 전용 UI)
│ ├── res/ 런처 아이콘 (mipmap-xxxhdpi)
│ ├── AndroidManifest.xml
│ ├── debug.keystore 공개 APK에서 사용되는 디버그 서명 키
│ ├── build.py 빌드 스크립트 (kotlinc + d8 + aapt2 + apksigner)
│ └── README.md 앱 문서
├── tools/ 헬퍼 스크립트
│ ├── fetch_assets.py 호스트: 네이티브 에셋 준비 (exploit + ksud)
│ ├── neozygisk_setup.sh 온디바이스: NeoZygisk + Vector (VECTOR.md 참조)
│ ├── status_check.sh 온디바이스: 루트 / 모듈 스냅샷
│ └── check_mods.sh 온디바이스: 모듈 검사 헬퍼
├── docs/ 문서 (영어)
│ ├── ARCHITECTURE.md 두 체인에 대한 심층 분석
│ ├── TROUBLESHOOTING.md 실패 처리, 성공률 데이터
│ └── VECTOR.md Xposed (NeoZygisk + Vector) 설정
└── screenshots/ 온디바이스 PNG 증거
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를 사용하지 마세요 — 시스템이
멈춥니다 (대신 NeoZygisk의 ptrace 주입 사용)이 프로젝트는 보안 연구 및 교육 목적으로만 제공되며, 본인이 소유하거나 테스트가 명시적으로 승인된 기기에서만 사용해야 합니다. 모든 결과와 법적 영향에 대한 책임은 전적으로 사용자에게 있습니다. 익스플로잇은 기기를 재부팅할 수 있으며, 드물게 데이터 손실이 발생할 수 있습니다 — 먼저 중요한 데이터를 백업하세요.
| 기능 | 구현 |
|---|
| 권한 상승 | 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; 부팅 후 한 번 탭 |
| Xposed 모듈 | NeoZygisk (ptrace zygote 주입) + Vector를 통해 지원 |
| 지속성 | 설계상 없음 (인메모리): 재부팅마다 재활성화 필요 (~3-4분) |