Skip to content
KitploitKITPLOIT
도구익스플로잇블로그
Log in
제출
도구익스플로잇블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

피드문의개인정보© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
ghostlock-app — # GhostLock 원탭 실행 앱 (CVE-2026-43499) | Kitploit
도구/GitHubGitHub/yukonga/ghostlock-app
Android SecurityPrivilege EscalationExploit FrameworksExploitationReverse EngineeringMobile SecurityBinary Analysis
GitHubyukonga/ghostlock-app

ghostlock-app

# GhostLock 원탭 실행 앱 (CVE-2026-43499)

저장소 보기
1.4k370555일 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

GhostLock-App

中文: README_ZH.md

문서

  • 커널 프로필 포팅 가이드 - 새로운 커널 지원 추가. GhostLock은 정확한 uname -r로 커널을 매칭하고 지원되지 않는 빌드를 거부하며, 상단에 상태를 표시합니다. 내장 프로필은 app/src/main/assets/kernel_profiles/에 위치합니다: 릴리스당 하나의 HOCON 파일, 런타임 인덱스인 index.conf, 그리고 <major.minor>-template.conf 버전 패밀리 템플릿.
  • 지원 기기 - 내장 커널 목록.
  • 공유 실행 기본값 - 모든 실행 튜닝 필드, 기본값, 그리고 그 이유.
  • 프로필 스키마 - 전체 프로필 구조와 데이터 흐름.
  • 컴포넌트 추가하기 - 새로운 네이티브 미들웨어 / 백엔드 / 프론트엔드 개발자 가이드 (중국어).

전체 기기 포팅 워크플로, 커널 패밀리 템플릿 링크, 튜닝 근거는 커널 프로필 포팅 가이드를 참조하세요.

Shizuku 필요로 명시적으로 표시된 행은 셸 UserService를 통해 실행됩니다. ADB로 Shizuku를 시작하고 상태 카드를 탭하여 접근을 허용하세요. 다른 모든 행은 앱의 일반 실행 경로를 사용합니다.

빠른 시작

GhostLock을 열고 Run을 탭하세요. KernelSU (me.weishu.kernelsu), ReSukiSU (com.resukisu.resukisu), 또는 KowSU (com.kowx712.supermanager)가 모듈 로딩을 위한 ksud를 제공합니다. 이것이 없으면 W1/W2는 여전히 uid 0을 부여하지만 모듈은 로드되지 않습니다.

실행 체인은 세 가지 컴포넌트의 파이프라인입니다: 프론트엔드 (root_child 시작/핸드오프), 백엔드 (CVE-2026-43499 futex 프리미티브), 그리고 미들웨어 라우트. 카탈로그화된 조합은 빌드 시점에 인스턴스화되며, 해석된 프로필이 어느 것이 실행될지 선택합니다. 라우트는 두 개의 코어를 경쟁시킵니다: 6.6/6.12 tree-waiter 커널에서는 메인 스레드가 select를 두드리는 동안 컨슈머 스레드가 waiter의 우선순위를 교란합니다. 6.1 compact-waiter 커널에서는 punched-hole 페이지를 통해 getsockopt(TCP_ZEROCOPY_RECEIVE)를 구동합니다. 5.15 커널은 멀티캐스트 waiter를 사용합니다. CPU 쌍 또한 해석된 프로필에서 가져옵니다.

명령줄 디버깅

adb/shell에는 seccomp 필터가 없으므로 W3는 건너뜁니다 - 빠른 검증에 유용합니다:

make -C src ghostlock
./gradlew exportKernelProfiles
adb push build/native/ghostlock /data/local/tmp/ghostlock
adb push build/kernel-profiles/<release>.bin /data/local/tmp/profile.bin
adb shell chmod 755 /data/local/tmp/ghostlock
adb shell /data/local/tmp/ghostlock --load-prebuilt-profile /data/local/tmp/profile.bin

오프셋 추출

tools/extract_rs는 boot.img (선택적으로 xbl_config.img 추가), 전체 OTA ZIP, 또는 이를 가리키는 http(s) URL에서 오프셋을 도출합니다. kallsyms는 --kallsyms에서 가져오거나 이미지의 내장 테이블에서 복구됩니다. pselect_waiter_shift와 off_slide_loggers_0_1은 내장 arm64 디스어셈블러로 도출됩니다. MediaTek 이미지에는 xbl_config.img가 없고 보통 BTF도 없습니다: 물리적 로드 주소는 kallsyms _text에서 도출됩니다 (--phys로 재정의).

Push-Location tools/extract_rs
cargo build --release
Pop-Location
build/extract/release/ghostlock-extract.exe boot.img --xbl-config xbl_config.img --format conf --out profile.conf
build/extract/release/ghostlock-extract.exe OTA.zip --format conf --out profile.conf

--format conf는 추출기 출력입니다: 평탄화된 자체 포함 프로필 (include 줄 없음, 공유 6.x credential/KernelSnitch 상수가 인라인됨, --route가 재정의하지 않는 한 --analysis 증거에서 선택된 라우트). 추출기는 이미지가 실제로 산출하는 모든 필드를 내보내고 나머지는 생략합니다. 인접 커널 패밀리의 추측 (검증되지 않은 패밀리 6.6, 기본 -2, 5.15 멀티캐스트 상수, 또는 phys 기본값)으로 빈틈을 채우지 않습니다. 모든 출력은 검증되지 않은 후보입니다: 가져오기 및 파싱이 가능하지만, 누락되거나 유효하지 않은 필드는 앱의 실행 전 검증에 의해 차단되므로, 성공적인 실행이 기기 지원을 의미하지는 않습니다. 5.x에서는 init_cred에서 credential 참조 복구를, BTF에서 멀티캐스트 지오메트리를 도출합니다 (docs/analysis/extractor-5x-derivation-plan.md 참조). --format json은 v1 가져오기 경로를 위해 유지됩니다. 내장 프로필을 추가하려면 일치하는 버전 패밀리 템플릿을 완성하고 검증한 후, 독립형 .conf 프로필로 저장하고 kernel_profiles/index.conf에 추가하세요. 구식 C offsets.h 레지스트리는 더 이상 사용되지 않으며 제거되었습니다.

MediaTek

MediaTek 이미지에는 xbl_config.img가 없고 보통 내장 BTF도 없으므로, 추출기가 이미지에서 두 개의 물리적 주소 (kernel_phys_load, kernel_phys_offset)를 도출할 수 없어 null로 남깁니다. 그러면 런타임이 SoC 공식으로 폴백하는데, 이는 MediaTek에서 W1에서 실패합니다. 루팅된 기기에서 별도의 tools/mtk-phys/ 추출기를 실행하여 (/proc/iomem을 읽음) 두 값을 모두 채우고, 앱의 고급 재정의에 값을 붙여넣으세요. MEDIATEK.md를 참조하세요.

사전 검사

추출기는 오프셋을 추출하기 전에 remove_waiter()를 디스어셈블합니다. 수정 사항이 있는 커널은 종료 코드 6으로 거부됩니다. 취약한 커널만 계속 진행됩니다.

기기 내 분석

전체 OTA는 전적으로 휴대폰에서 분석할 수 있습니다: boot와 xbl_config가 자동으로 추출됩니다. 앱 샌드박스 내에서 실행할 때는 --work-dir에 앱이 쓸 수 있는 디렉터리를 전달하세요. 크로스 컴파일 및 푸시:

rustup target add aarch64-linux-android
$ndk = "$env:ANDROID_HOME\ndk\<version>\toolchains\llvm\prebuilt\windows-x86_64\bin"
$env:CC_aarch64_linux_android = "$ndk\aarch64-linux-android35-clang.cmd"
$env:AR_aarch64_linux_android = "$ndk\llvm-ar.exe"
$env:CARGO_TARGET_AARCH64_LINUX_ANDROID_LINKER = $env:CC_aarch64_linux_android
Push-Location tools/extract_rs
cargo build --release --target aarch64-linux-android
Pop-Location
adb push build/extract/aarch64-linux-android/release/ghostlock-extract /data/local/tmp/
adb shell /data/local/tmp/ghostlock-extract /sdcard/OTA.zip

앱을 다시 빌드하지 않고 오프셋 가져오기

새로운 커널은 더 이상 앱 재빌드가 필요하지 않습니다: **Import offsets.conf (HOCON)**을 탭하고 추출기의 평탄화된 .conf를 선택하거나, 이전 JSON 보고서의 경우 **Import offsets.json (v1)**을 사용하세요. v1 JSON은 앱 내에서 변환되므로 기기에 푸시할 필요가 없습니다: 네이티브는 항상 앱이 stdin으로 보내는 GLK1 문서에서 시작하며, 커널을 거부하기 전에 현재 uname -r을 해석된 프로필과 매칭합니다. 가져오기는 파일 간에 병합됩니다. 이미 저장된 릴리스는 덮어쓰기 전에 확인을 요청합니다.

앱은 프로필 자체를 생성할 수도 있습니다 — Parse OTA link (전체 OTA ZIP URL)와 Parse image (boot.img + 선택적 xbl_config.img)는 추출기를 프로세스 내에서 실행하고 성공 시 평탄화된 .conf를 앱 데이터 디렉터리에 기록합니다:

# GhostLock kernel profile: 6.12.38-android16-5-g844001fb8721-ab14552068-4k (HOCON, self-contained).
release = "6.12.38-android16-5-g844001fb8721-ab14552068-4k"
schema_version = 1
kernel_major = 6
recommend_shizuku = 0
kernel_phys_load = 0xC7800000
route {
  select_stack {
    waiter_shift = 0
  }
}
fallback {
  to = "none"
}
kernelsnitch {
  collisions = 4
}
task_struct {
  prio = 148
  cred = 2304
}
cred {
  caps_offset = 48
  copy_size = 136
  usage_value = 1
  caps_count = 5
  caps_value = -1
}
offset {
  init_task = 37801728
  init_cred = 37891184
}

크레딧 및 라이선스

다음 프로젝트를 기반으로 하며, Apache License 2.0에 따라 라이선스됩니다 (LICENSE 참조):

  • NebuSec/CyberMeowfia
  • JoinChang/ghostlock-oneplus
  • x-spy/CVE-2026-43499-popsicle
도구 다운로드