
Привязанная к оборудованию полиморфная виртуальная машина на 256 слотов, нелинейный MBA и бинарный протектор Apple Secure Enclave для macOS arm64 (Apple Silicon) — публичный CrackMe и документация SDK
scLock (Supercluster Lock)Аппаратно-привязанная полиморфная виртуальная машина на 256 слотов, нелинейный MBA ($\mathbb{Z}_{2^{64}}$) и бинарный протектор Apple Secure Enclave для macOS (arm64 Apple Silicon)
Разработано relay (relay // SYSTEMS)
Получить коммерческий SDK на Gumroad ($79) · Попробовать публичный CrackMe-челлендж · Живая целевая страница · 한국어 안내 (Korean)
scLock?Стандартные бинарники macOS Mach-O (arm64), скомпилированные из C, C++, Rust, Swift или Objective-C, за секунды раскрывают чистые графы потока управления и открытые константы в Ghidra, IDA Pro и Binary Ninja. Обычные обфускаторы ПО полагаются на единственный статический ключ или центральный диспетчер switch(opcode), где восстановление одного ключа выгружает весь поток байткода.
scLock (Supercluster Lock) объединяет полиморфную виртуализацию на 256 слотов на этапе компиляции, дробление MBA-ключей для каждого обработчика и двухуровневую привязку к Apple Silicon Secure Enclave (SEP):
sclock compile) синтезирует совершенно новый набор инструкций из 256 записей (172 активных микрокоманд + 84 обработчика-обманки, повреждающих состояние) из 64-битного полиморфного зерна. Никакие две сборки никогда не разделяют одну и ту же байткодовую кодировку или таблицу обработчиков.black_box + vm.anchor): Даже когда аналитик вычисляет внешние ключи губки (k0, k1) в портативном режиме, байткодовые пакеты невозможно расшифровать из статических таблиц или непосредственных констант. Сырые соли обработчиков (op_secret_salt) исключены из статических секций данных (заменены односторонними ANCHOR_SHARDS по схеме Дэвиса-Мейера) и предварительно замаскированы относительно якоря целостности кода. Внутри каждого из 256 скомпилированных обработчиков ARM64 (__sc_lut_op_000..255) h_salt и маски операндов (hm1, hm2, hm3) реконструируются во время выполнения путём объединения аффинных параметров, защищённых std::hint::black_box, с живым vm.anchor ([x0, #0xa0]) через нелинейные полиномы MBA — что противостоит свёртке констант LLVM (-C opt-level=3) и упрощению InstCombine.SEP):
SCP1): Создан для универсального распространения среди конечных пользователей macOS и публичного CrackMe, чтобы бинарник работал офлайн на любом Mac с Apple Silicon (M1 / M2 / M3 / M4). Выводит внешние ключи губки (k0, k1) через белый ящик KDF на основе SHA-256 с якорем кода на 1 024 раунда в паре с живым коммутативным P-256 двойным ECDH-шлюзом SEP против эмуляции / перехвата ($d_{\text{SEP}} \cdot Q_P \stackrel{?}{=} d_P \cdot Q_{\text{SEP}}$, выполняемым на Secure Enclave для отравления выполнения под не-SEP эмуляторами или API-хуками). Поскольку офлайн-выполнение на всех Mac требует детерминированного вывода ключей, защита от статического извлечения в SCP1 обеспечивается разрушением MBA-соли с привязкой к среде выполнения для каждого обработчика (vm.anchor + black_box) и зависящим от состояния сцеплением губки по всем 256 обработчикам.--sep-lock / --host-sep-lock): Запечатывает приватный ключ P-256 непосредственно внутри физического UID Secure Enclave целевого Mac (аппаратно обёрнутый rk1/dacl блоб kSecAttrTokenIDSecureEnclave). Никакого распечатываемого ключевого материала не существует нигде в бинарнике Mach-O — офлайн-вывод ключей физически невозможен без кремния Secure Enclave целевого Mac.if (is_debugged) exit() scLock подмешивает бит P_TRACED из ядерного sysctl и сканирование пролога ARM64 BRK (0xD4200000) напрямую в 256-битный аккумулятор состояния губки, с автоматической очисткой символов и путей инструментальной цепочки (sclock protect-app).Не верьте нам на слово — проверьте scLock в своём собственном дизассемблере и отладчике прямо сейчас.
Этот репозиторий включает автономный бинарник Mach-O arm64, защищённый scLock (v1.0.0, скомпилированный в портативном режиме SCP1, чтобы он работал на любом Mac с Apple Silicon):
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>
Откройте crackme/challenge_protected в Ghidra, IDA Pro, Binary Ninja или LLDB и попробуйте:
h_salt) и декомпилировать виртуализированную процедуру ценообразования/проверки, не вызвав тайм-аут декомпилятора Ghidra (>330s).lldb и пройти по виртуализированному циклу диспетчеризации, не повредив состояние sponge, переплетённое с P_TRACED.arg2 != 1234) и точные 64-битные алгебраические константы смешивания внутри виртуализированной процедуры.Нашли интересный анализ или разбор? Опубликуйте его в Issue #1 (Official CrackMe Challenge Thread)!
Протестировано на Apple Silicon (macOS arm64, профиль Release):