
CVE-2026-43499를 이용해 Galaxy를 루팅하세요
中文: README_ZH.md
이 저장소가 별도로 분리된 이유는 이 경로가 adb shell 또는 Shizuku를 통해 획득한 Android shell 권한을 필요로 하기 때문입니다. 원본 YuKongA/ghostlock-app은 shell 권한을 사용하지 않고 다른 실행 경로를 따르므로, 그 요구사항과 코드 경로가 이 프로젝트와 호환된다고 가정해서는 안 됩니다.
| 기기 | 커널 |
|---|---|
| Samsung Galaxy Z Fold6 (SM-F9560 / q6q) | 6.1.145-android14-11-3254009-abF9560ZCS4DZG3 |
시작 시 uname -r을 통해 커널을 오프셋 테이블과 대조하며, 지원되지 않는 커널은 즉시 거부됩니다.
APK 경로의 경우, 무선 디버깅을 통해 Shizuku를 시작하고 GhostLock 권한을 부여한 뒤 Run을 탭하세요. Shizuku는 Android shell 사용자로 페이로드를 실행하며, APK 자체가 익스플로잇 실행 컨텍스트는 아닙니다.
직접 명령줄 경로는 Shizuku 없이도 동일한 검증된 shell 페이로드를 실행합니다:
make ghostlock helper
adb push ghostlock /data/local/tmp/ghostlock
adb push ghostlock-helper /data/local/tmp/ghostlock-helper
adb push app/src/main/assets/ksud-zfold6-F9560ZCS4DZG3-samsung-main-no-patch-text-kdp /data/local/tmp/ksud-zfold6-F9560ZCS4DZG3-samsung-main-no-patch-text-kdp
adb shell chmod 755 /data/local/tmp/ghostlock
adb shell chmod 755 /data/local/tmp/ghostlock-helper
adb shell chmod 755 /data/local/tmp/ksud-zfold6-F9560ZCS4DZG3-samsung-main-no-patch-text-kdp
adb shell /data/local/tmp/ghostlock
helper는 UMH root 및 KernelSU late-load 단계에서 필요합니다.
일부 Samsung/Exynos 6.1 커널에서는 일반적인 KernelSU 모듈이 ksud late-load 중 EL2 패닉을 유발할 수 있는데, 이는 모듈이 라이브 텍스트 패칭을 시도하기 때문입니다. 영향을 받는 대상의 경우, 정확한 펌웨어 릴리스에 맞춰 모듈을 빌드하고 대상 트리의 no-patch-text 옵션을 활성화하세요:
CONFIG_KSU_SAMSUNG_NO_PATCH_TEXT=y
대상별 kernelsu.ko와 ksud를 짝지어 사용하고, 6.1 KMI만이 아니라 기기의 전체 uname -r과 일치시키세요. late-load 중 재부팅은 ksud 로더가 아니라 모듈의 초기화에서 비롯될 수 있습니다. 이는 Samsung/Exynos 전용 예방 조치이며, 현재 SM-F9560 대상은 Snapdragon이므로 별도로 검증해야 합니다. 대상별 빌드 예시는 Root-My-Galaxy-Payloads를 참조하세요.
Qualcomm 기기에서 tools/extract_target.py는 boot.img와 xbl_config.img로부터 오프셋을 파싱합니다. Python 3와 kallsyms 소스(--kallsyms 파일 또는 --kallsyms-finder)가 필요합니다. --llvm-objdump를 전달하거나(또는 PATH/NDK에 llvm-objdump가 있는 경우) 추가로 커널을 디스어셈블하여 pselect_waiter_shift와 off_slide_loggers_0_1을 자동으로 도출합니다:
python tools/extract_target.py `
boot.img `
--xbl-config xbl_config.img `
--format c `
--out offsets.h
core_sys_select는 사용자 fd_set 데이터 중 3 x FDS_BYTES(nfds)만을 커널 스택에 복사합니다(nfds=320일 때 qword 0..14). futex waiter는 이 제어 가능한 영역 안에 위치해야 합니다: waiter 시작 워드 + 11(lock 필드) <= 14, 즉 도출된 shift(qword 단위로 fd_set으로부터의 waiter 오프셋)가 <= 3이어야 하며, 그렇지 않으면 task/lock이 커널에 의해 0으로 초기화된 꼬리 영역에 떨어져 해당 경로가 작동할 수 없습니다. 레이아웃이 실현 불가능한 경우 스크립트는 명확한 오류와 함께 실패합니다.
페이로드 연구와 지원 아티팩트에 대한 더 자세한 내용은 Root-My-Galaxy-Payloads에서 확인할 수 있습니다. Pull request를 환영합니다.
다음 프로젝트를 기반으로 하며, Apache License 2.0에 따라 라이선스됩니다(LICENSE 참조):