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

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

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

피드문의개인정보© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
sclock — macOS arm64(Apple Silicon)용 하드웨어 바인딩 256슬롯 다형성 VM, 비선형 MBA 및 Apple Secure Enclave 바이너리 보호기 — 공개 CrackMe 및 SDK 문서 | Kitploit
도구/GitHubGitHub/planners1490/sclock
Reverse EngineeringCryptographyCTFBinary AnalysisAnti-Bot
GitHubplanners1490/sclock

sclock

macOS arm64(Apple Silicon)용 하드웨어 바인딩 256슬롯 다형성 VM, 비선형 MBA 및 Apple Secure Enclave 바이너리 보호기 — 공개 CrackMe 및 SDK 문서

저장소 보기
201일 전아직 검토되지 않음

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
웹사이트
scLock — relay의 Supercluster Lock

scLock (Supercluster Lock)

하드웨어 바인딩 256-슬롯 다형성 VM, 비선형 MBA ($\mathbb{Z}_{2^{64}}$) 및 macOS용 Apple Secure Enclave 바이너리 보호기 (arm64 Apple Silicon)

개발: relay (relay // SYSTEMS)

Platform: macOS arm64 Hot-Path Latency: 8.15 µs Ghidra Decompiler: >330s Timeout Commercial SDK: $79 on Gumroad

Gumroad에서 상용 SDK 받기 ($79) · 공개 CrackMe 챌린지 도전하기 · 라이브 랜딩 페이지 · 한국어 안내 (Korean)


scLock을 사용하는 이유

C, C++, Rust, Swift 또는 Objective-C로 컴파일된 표준 macOS Mach-O (arm64) 바이너리는 Ghidra, IDA Pro, Binary Ninja에서 몇 초 만에 깔끔한 제어 흐름 그래프와 평문 상수를 노출합니다. 기존 소프트웨어 난독화 도구는 단일 정적 키나 중앙 집중식 switch(opcode) 디스패처에 의존하기 때문에, 키 하나만 복구하면 전체 바이트코드 스트림이 그대로 드러납니다.

scLock (Supercluster Lock) 은 컴파일 타임 256-슬롯 다형성 가상화, 핸들러별 MBA 키 분쇄(shattering), 그리고 이중 계층 Apple Silicon Secure Enclave (SEP) 바인딩을 결합합니다:

  1. 빌드별 256-슬롯 다형성 ISA + 84개 채프 트랩: 모든 컴파일(sclock compile)은 64비트 다형성 시드로부터 완전히 새로운 256개 항목의 명령어 집합(172개의 활성 마이크로 연산 + 84개의 상태 손상 채프 핸들러)을 합성합니다. 두 빌드가 동일한 바이트코드 인코딩이나 핸들러 테이블을 공유하는 일은 결코 없습니다.
  2. 핸들러별 런타임 얽힘(black_box + vm.anchor) MBA 솔트 분쇄: 분석가가 Portable 모드에서 외부 스펀지 키 (k0, k1)를 계산하더라도, 바이트코드 패킷은 정적 테이블이나 즉시 상수로부터 복호화될 수 없습니다. 원시 핸들러 솔트(op_secret_salt)는 정적 데이터 섹션에서 생략되며(단방향 Davies-Meyer ANCHOR_SHARDS로 대체됨) 코드 무결성 앵커에 대해 사전 마스킹됩니다. 256개의 컴파일된 ARM64 핸들러(__sc_lut_op_000..255) 각각 내부에서 h_salt와 피연산자 마스크(hm1, hm2, hm3)는 std::hint::black_box로 보호된 아핀 파라미터를 비선형 MBA 다항식을 통해 라이브 vm.anchor([x0, #0xa0])와 결합하여 런타임에 재구성됩니다—이는 LLVM(-C opt-level=3)의 상수 폴딩과 InstCombine 단순화를 무력화합니다.
  3. 비선형 혼합 불리언-산술($\mathbb{Z}_{2^{64}}$) 및 2-adic 전단사: 산술, 곱셈, 상수, 제어 흐름 전이는 $\mathbb{Z}_{2^{64}}$ 상의 2차/3차 비선형 MBA 항등식으로 리프팅되며, 2-adic 정수론적 불투명 술어($7x^2 - 1 \neq y^2 \pmod{2^{64}}$)와 결합됩니다.
  4. 이중 계층 Apple Secure Enclave(SEP) 아키텍처:
    • Portable 멀티-Mac 모드(기본값, SCP1): 범용 최종 사용자 macOS 배포 및 공개 CrackMe를 위해 빌드되어 바이너리가 **모든 Apple Silicon Mac(M1 / M2 / M3 / M4)**에서 오프라인으로 실행됩니다. 1,024라운드 SHA-256 코드 앵커 화이트박스 KDF와 라이브 SEP 교환 P-256 이중 ECDH 안티 에뮬레이션 / 안티 후킹 게이트($d_{\text{SEP}} \cdot Q_P \stackrel{?}{=} d_P \cdot Q_{\text{SEP}}$가 Secure Enclave에서 실행되어 비-SEP 에뮬레이터나 API 후킹 하에서 실행을 오염시킴)를 통해 외부 스펀지 키 (k0, k1)를 도출합니다. 모든 Mac에서의 오프라인 실행에는 결정론적 키 도출이 필요하므로, SCP1의 정적 추출 방어는 핸들러별 런타임 얽힘(vm.anchor + black_box) MBA 솔트 분쇄와 256개 핸들러 전반에 걸친 상태 의존적 스펀지 체이닝으로 제공됩니다.
    • 하드웨어 UID 노드 잠금 모드(--sep-lock / --host-sep-lock): P-256 개인 키를 대상 Mac의 물리적 Secure Enclave UID(kSecAttrTokenIDSecureEnclave 하드웨어 래핑된 rk1/dacl 블롭) 내부에 직접 봉인합니다. Mach-O 바이너리 어디에도 봉인 해제 가능한 키 자료가 존재하지 않습니다—대상 Mac의 Secure Enclave 실리콘 없이는 오프라인 키 도출이 물리적으로 불가능합니다.
  5. 분기 없는 안티 디버그 상태 얽힘 및 제로 누출 위장: 패치 가능한 if (is_debugged) exit() 분기 대신, scLock은 커널 sysctl P_TRACED 비트와 ARM64 프롤로그 BRK(0xD4200000) 스캔을 256비트 스펀지 상태 누산기에 직접 혼합하며, 심볼 및 툴체인 경로 자동 스크러빙(sclock protect-app)을 수행합니다.

공개 리버스 엔지니어링 챌린지 (CrackMe)

저희 말만 믿지 마시고, 지금 바로 여러분의 디스어셈블러와 디버거에서 scLock을 테스트해 보세요.

이 저장소에는 scLock으로 보호된 독립 실행형 Mach-O arm64 바이너리가 포함되어 있습니다(v1.0.0, Portable SCP1 모드로 컴파일되어 모든 Apple Silicon Mac에서 실행됨):

  • 바이너리 경로: crackme/challenge_protected (또는 scLock-CrackMe-Challenge-macOS-arm64.zip 다운로드)
  • 아키텍처: Mach-O 64-bit executable arm64 (Apple Silicon M1 / M2 / M3 / M4)

직접 실행하고 감사해 보세요

# 1. Clone this repository (or unzip the release archive)
git clone https://github.com/planners1490/sclock.git
cd sclock/crackme

# 2. Clear macOS Gatekeeper quarantine (if downloaded via browser) & make executable
xattr -cr ./challenge_protected
chmod +x ./challenge_protected

# 3. Inspect symbol table & strings (Zero VM/Obfuscator leaks)
nm -gU ./challenge_protected
strings ./challenge_protected | grep -iE "sclock|vm|opcode|mba|chaff" || echo "0 leaks found"

# 4. Execute the protected binary on any Apple Silicon Mac
./challenge_protected            # Runs built-in self-test (seats=20, pin=1234 -> 83300)
./challenge_protected 20 1234    # Pass custom <seats> <unlock_pin>

챌린지 목표

Ghidra, IDA Pro, Binary Ninja 또는 LLDB에서 crackme/challenge_protected를 열고 다음을 시도하십시오:

  1. Ghidra의 디컴파일러 타임아웃(>330s)을 트리거하지 않고 256개의 핸들러별 MBA 솔트(h_salt)를 모두 복구하고 가상화된 가격 책정/검증 루틴을 디컴파일합니다.
  2. lldb를 연결하고 P_TRACED와 얽힌 스펀지 상태를 손상시키지 않으면서 가상화된 디스패치 루프를 단계별로 실행합니다.
  3. 숨겨진 보조 4자리 마스터 PIN(arg2 != 1234)과 가상화된 루틴 내부의 정확한 64비트 대수적 혼합 상수를 찾습니다.

흥미로운 분석이나 해설을 찾으셨나요? 이슈 #1 (공식 CrackMe 챌린지 스레드)에 게시해 주세요!


실증 벤치마크

Apple Silicon(macOS arm64, Release 프로파일)에서 테스트:

1. 리버스 엔지니어링 및 디컴파일러 저항성

분석 벡터보호되지 않은 바이너리 (clang -O3)scLock v1.0.0 보호 바이너리
Ghidra 11.x 디컴파일러 (DecompileCallback)0.4초 (전체 C 소스 복구됨)> 330초 타임아웃 (디컴파일러 프로세스 종료됨)
IDA Pro / Binary Ninja CFG 복구깔끔한 제어 흐름 그래프256방향 간접 디스패치 벽 + 84개의 Chaff 트랩
키 및 솔트 아키텍처__TEXT,__const에 상수가 노출됨핸들러별 black_box MBA 솔트 분쇄 + 휴대용 SCP1 / 노드 잠금 --sep-lock
동적 디버깅 (lldb / frida)간단한 중단점 및 레지스터 수정분기 없는 P_TRACED 얽힘을 통한 조용한 상태 손상
난독화기 심볼 및 경로 감사 (nm / strings)함수 이름 및 /rustc/ / .llvm. 경로 노출난독화기/VM 심볼 또는 /rustc/ 경로 누출 0건 (자동 정리된 Mach-O)

2. 런타임 성능 오버헤드

scLock은 전체 UI 계층을 비대하게 만드는 대신 핵심 고가치 함수(라이선스 검증, 독점 DSP/AI 가중치, 암호화 키 스케줄, 변조 방지 게이트)를 대상으로 하기 때문입니다:

지표측정값비고
단일 가상화 함수 호출 지연 시간~8–12 µs (~0.01 ms)전체 256슬롯 다형성 VM + MBA 평가
지속 처리량~85,000–120,000 호출 / 초단일 코어 Apple Silicon (arm64)
120 FPS 실시간 프레임 예산 영향< 0.15% (0% 프레임 드롭)실시간 오디오 플러그인(AU/VST3), 게임 및 macOS 앱에 안전

3개의 명령으로 scLock이 작동하는 방식

상용 scLock SDK는 단일 자체 포함 네이티브 arm64 CLI 바이너리(bin/sclock)로 제공됩니다.

1. C / C++ / Wasm 함수 보호

# Default: Portable All-Mac SEP-Attested + Per-Handler MBA Mode (runs on any Apple Silicon Mac)
sclock compile examples/01_quickstart_c/protect_me.c \
  -o protect_me_locked

# Optional: Single-Machine Physical SEP UID Node-Locked Mode (zero unsealable keys in binary)
sclock compile examples/01_quickstart_c/protect_me.c \
  -o protect_me_node_locked \
  --sep-lock

2. 기존 Rust / C++ / Swift 앱 바이너리 스크럽 및 강화

# Scrub internal compiler/LLVM paths, strip symbol tables, and apply Hardened Runtime signature
sclock protect-app ./target/release/my_commercial_app

3. 5단계 무유출 스텔스 감사 실행

sclock verify ./protect_me_locked
도구 다운로드