
GhostLock (CVE-2026-43499)은 RootMyVivo Neo용 익스플로잇 포크입니다 — iQOO Neo 11 (PD2520, SM8750, 6.6.89). 본인 소유 기기에 대한 승인된 연구 목적으로만 사용하십시오.
boxiaolanya2008/CVE-2026-43499-Neo11Plus의 포크로, RootMyVivo Neo에 맞게 재작업했습니다: 우리 시나리오에 필요 없는 것은 모두 제거하고, 검증된 익스플로잇 코어는 타이밍 변경 없이 그대로 유지했습니다.
| 컴포넌트 | 이유 |
|---|---|
| 배경화면 변경 + system_server 종료 | 루팅 후 "저절로" 발생하는 soft reboot과 배경화면 변경의 주 원인 |
| io 데몬 (포트 39555) | 디버그용 kernelapp에만 필요했음; 앱은 su를 통해 동작 |
| /apex/com.android.virt/bin에 대한 tmpfs 오버레이 | soft reboot 시 zygote/system_server를 멈추게 할 수 있었음 (검은 화면) |
| adbd의 mount-namespace에 su 설치 | 앱이 전체 경로로 /data/local/tmp/su를 호출 |
| 부트 서비스 10-neo11-su.sh | 고정은 앱이 수행: persist.adb.tcp.port + adb_keys + ksud |
| 다른 기기의 오프셋 테이블 | PD2520-BP2A.250605.031.A3만 |
| kernelapp (app/) | 앱 기능으로 대체됨 |
panic_on_oops=0, panic_on_warn=0 (패닉 방지),
kptr_restrict/dmesg_restrict, AVC 오염 (policycap을 깨지 않는 permissive)/system/bin/su가 나타나면 해당 경로로 포워딩익스플로잇은 /data/local/tmp/su (0755, root:root, system_file context)를 배치하고
소켓 /data/local/tmp/temp_su.sock으로 데몬을 시작합니다.
앱은 전체 경로로 su를 호출하므로 — /apex는 전혀 건드리지 않습니다.
cd exploit
PATH=/data/data/com.termux/files/usr/bin:$PATH \
make HOST_CLANG=/data/data/com.termux/files/usr/bin/clang \
NDK_ROOT=/root/android-sdk/ndk/26.1.10909125
build/PD2520-BP2A.250605.031.A3/bin/preload.so (~140 KB)
및 build/embed/su_daemon_aarch64_pie (su, ~11 KB)6.6.89-android15-8-g1f71897ac249-abogki467805059-4k (오프셋은
이 boot.img의 kallsyms+BTF에서 추출; 커널 변경 = target.h 재생성)cd /data/local/tmp/rmv && LD_PRELOAD=$PWD/preload.so /system/bin/trueRMV_ATTEMPTS=N — 전체 시도 횟수 (기본값 3)RMV_RETRY_DELAY=N — 시도 간 대기 시간(초) (기본값 8)NEO11_* — upstream 핸들 (delay/nice/attempts) 유지됨| 메커니즘 | 하는 일 | 방어 대상 |
|---|
| safety_quiesce | PI 경로 전에 loadavg < 4를 대기 (최대 10초) | 다른 프레임의 waiter → 높은 시스템 부하 시 panic |
| cred-guard | cred 기록 전에 포인터가 정규 커널 주소인지 검사 | 쓰레기 포인터 기록 → 즉각적인 task_struct 손상 → panic |
| retry 루프 | 최대 3회 전체 실행 (각각 새 fork에서) 8초 간격 | 타이밍 복불복: 두 번째 시도가 종종 성공, upstream은 그냥 포기했음 |
| 적응형 스핀 | consumer 스레드: 200회 yield → nanosleep(0.2 ms) | 익스플로잇 전 과정에서 100% CPU |