Подписывайтесь на наш Telegram и не пропускайте важные новости! Перейти

Гайд SCP:SL — Полный разбор Anti-Cheat (SLAC), обход и реверс

Sloppy
Начинающий
Начинающий
Статус
Оффлайн
Регистрация
13 Фев 2026
Сообщения
658
Реакции
18
Решил на досуге плотно поковырять SCP: Secret Laboratory. Игра хоть и выглядит местами топорно, но под капотом там крутятся довольно специфичные механизмы защиты. Слили этот материал с целью показать, насколько дырявым может быть античит, если разработчики полагаются только на готовые протекторы типа Themida, не понимая основ безопасности.

Архитектура защиты
Всё делится на две части:
  1. SCP-SL.exe — сам бинарник игры, отвечает за авторизацию и сбор HWID.
  2. SLAC.dll — основная либа античита, которая занимается детектами и общением с бэкендом.

Технические дыры SLAC
Либа упакована и виртуализирована через Themida, но вот незадача — огромное количество критических данных осталось в открытом виде. Вскрываем всё это в IDA и видим классику:

1. RTTI (RunTime Type Information): Разработчики оставили RTTI включенным. Это подарок для реверсера, так как все структуры и типы данных видны как на ладони. Детекты здесь примитивные: чекают теги пула ядра, сигнатуры и базовую целостность. Юзают обычный WinAPI, даже до Nt-функций не дошли, не говоря уже о syscalls.

2. Дизайн VTable: Все проверки используют виртуальные таблицы. Дизайн примитивный, и, что самое смешное, Themida не чекает их целостность. Лейаут таблиц одинаков для всех проверок, так как они юзают один и тот же базовый класс.

3. CURL и сеть: Тут вообще эпик. Проверка сертификатов в CURL просто отключена. Если перенаправить трафик античита (slac.scpslgame.com/beat) на любой локальный пых-скрипт, который возвращает 200 OK — вы успешно «байпасснули» античит.

Сетевой протокол и крипта
Трафик шифруется через AES256CBC. Чтобы дебажить CURL без лишней возни, можно просто создать файл %APPDATA%/SCP Secret Laboratory/slac_debug.txt, и все логи упадут в ту же папку.

Для дешифровки JSON-пакетов используйте эти ключи:
Код:
Expand Collapse Copy
std::string key_hex = "e43f7ba2b97ee287e63e14f5cc567fea70cc841f751bc54dd2d41ab8f4c1cbdf";
std::string iv_hex = "5810706fa51b2663db8b17768f92e4a4";

Логирование и HWID
Игра собирает о вас буквально всё. В пакетах на сервер улетают:
  1. Токены Steam и старые тикеты.
  2. Имя ПК (Workgroup) и SID.
  3. Данные процессора и Machine GUID.
  4. MAC-адреса шлюза и всех адаптеров.
  5. Серийники дисков и переменные окружения PATH.
В папке %APPDATA% создаются файлы c-data, s-configs, u-data, которые тоже участвуют в идентификации. Если хотите играть после бана — спуфать нужно всё по списку.

Обход целостности (Integrity Bypass)
Обойти проверку целостности Themida можно через банальный патч функции проверки, подсовывая ей «теневую копию» оригинальной памяти. Пример на голом асме:

Код:
Expand Collapse Copy
__attribute__((naked))
void hkInteg()
{
 __asm
 {
  push rbp
  mov rbp, rsp
  push rsi
  push rdi
  /* PATCH: Подменяем rsi на нашу чистую копию */
  mov rsi, shadow_copy 
  mov rdi, [rbp + 10h]
  mov ecx, [rbp + 20h]
  rep movsb
  /* Restore & Exit */
  pop rdi
  pop rsi
  leave
  retn 18H
 }
}

Итог
Античит крайне сырой. Нет ASLR, слабый анти-дебаг, полное отсутствие контроля syscalls и примитивная логика на VTable. Для внешних читов (External) детектов практически нет, если не наглеть с RPM/WPM.

Кто уже пробовал эмулировать их бэкенд на постоянке, есть ли нюансы по хертбитам?
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Решил на досуге плотно поковырять SCP: Secret Laboratory. Игра хоть и выглядит местами топорно, но под капотом там крутятся довольно специфичные механизмы защиты. Слили этот материал с целью показать, насколько дырявым может быть античит, если разработчики полагаются только на готовые протекторы типа Themida, не понимая основ безопасности.

Архитектура защиты
Всё делится на две части:
  1. SCP-SL.exe — сам бинарник игры, отвечает за авторизацию и сбор HWID.
  2. SLAC.dll — основная либа античита, которая занимается детектами и общением с бэкендом.

Технические дыры SLAC
Либа упакована и виртуализирована через Themida, но вот незадача — огромное количество критических данных осталось в открытом виде. Вскрываем всё это в IDA и видим классику:

1. RTTI (RunTime Type Information): Разработчики оставили RTTI включенным. Это подарок для реверсера, так как все структуры и типы данных видны как на ладони. Детекты здесь примитивные: чекают теги пула ядра, сигнатуры и базовую целостность. Юзают обычный WinAPI, даже до Nt-функций не дошли, не говоря уже о syscalls.

2. Дизайн VTable: Все проверки используют виртуальные таблицы. Дизайн примитивный, и, что самое смешное, Themida не чекает их целостность. Лейаут таблиц одинаков для всех проверок, так как они юзают один и тот же базовый класс.

3. CURL и сеть: Тут вообще эпик. Проверка сертификатов в CURL просто отключена. Если перенаправить трафик античита (slac.scpslgame.com/beat) на любой локальный пых-скрипт, который возвращает 200 OK — вы успешно «байпасснули» античит.

Сетевой протокол и крипта
Трафик шифруется через AES256CBC. Чтобы дебажить CURL без лишней возни, можно просто создать файл %APPDATA%/SCP Secret Laboratory/slac_debug.txt, и все логи упадут в ту же папку.

Для дешифровки JSON-пакетов используйте эти ключи:
Код:
Expand Collapse Copy
std::string key_hex = "e43f7ba2b97ee287e63e14f5cc567fea70cc841f751bc54dd2d41ab8f4c1cbdf";
std::string iv_hex = "5810706fa51b2663db8b17768f92e4a4";

Логирование и HWID
Игра собирает о вас буквально всё. В пакетах на сервер улетают:
  1. Токены Steam и старые тикеты.
  2. Имя ПК (Workgroup) и SID.
  3. Данные процессора и Machine GUID.
  4. MAC-адреса шлюза и всех адаптеров.
  5. Серийники дисков и переменные окружения PATH.
В папке %APPDATA% создаются файлы c-data, s-configs, u-data, которые тоже участвуют в идентификации. Если хотите играть после бана — спуфать нужно всё по списку.

Обход целостности (Integrity Bypass)
Обойти проверку целостности Themida можно через банальный патч функции проверки, подсовывая ей «теневую копию» оригинальной памяти. Пример на голом асме:

Код:
Expand Collapse Copy
__attribute__((naked))
void hkInteg()
{
 __asm
 {
  push rbp
  mov rbp, rsp
  push rsi
  push rdi
  /* PATCH: Подменяем rsi на нашу чистую копию */
  mov rsi, shadow_copy
  mov rdi, [rbp + 10h]
  mov ecx, [rbp + 20h]
  rep movsb
  /* Restore & Exit */
  pop rdi
  pop rsi
  leave
  retn 18H
 }
}

Итог
Античит крайне сырой. Нет ASLR, слабый анти-дебаг, полное отсутствие контроля syscalls и примитивная логика на VTable. Для внешних читов (External) детектов практически нет, если не наглеть с RPM/WPM.

Кто уже пробовал эмулировать их бэкенд на постоянке, есть ли нюансы по хертбитам?
Правда то что все твои слова это ИИ?
 
А про трейсера в реестре не уточняли...
кому надо уже давно знают,если тип хочет делать спуфер при этом не зная про дефолтные трейсера от минимального ач то пусть он не начинает делать
 
Назад
Сверху Снизу