§ 01

Что показывает VirusTotal

3/70
детектов на лаунчере

Microsoft: Trojan:Win32/Wacatac.B!ml. SecureAge: Malicious. Symantec: ML.Attribute.HighConfidence. Все три метки заканчиваются на !ml или содержат ML, это heuristic-модели без конкретной сигнатуры. Никакого именного семейства малвари не подтверждено.

67/70
не видят угрозы

Kaspersky, ESET, Bitdefender, Sophos, F-Secure, TrendMicro, McAfee, Avast, AVG, Malwarebytes и остальные major-вендоры с сигнатурными базами пропускают. У реальных троянов и стилеров картина обратная: 30-50 детектов с именами семейств, а не с ML-меткой.

1806классов
в чит-моде

Сам Fabric-мод весит 21 МБ, имена классов забиты юникод-мусором, а строки и вызовы методов спрятаны за InvokeDynamic-бутстрап. Классическая обфускация в стиле Skidfuscator, без запуска не читается.

§ 02

Разбор по компонентам

  1. C1
    Exploit-Launcher.exe, нативная обёртка на WebView2
    x64 PE MSVC 14.50 1.55 МБ PDB не удалён

    Не упакован, энтропия секций нормальная. UI отрисован в Microsoft Edge WebView2: логин, регистрация, кнопка запуска, всё это HTML/JS внутри embedded browser. Взаимодействие с натив-кодом через webMessageReceived, шлёт JSON вида {"type":"authenticated","username":"..."}.

    SHA256   67125e70589f81c90e3c3ae9362cd538f87369e4d6e94b1cda7f96ffb29b76f2
    linker   14.50 (VS 2022)
    subsys   GUI (WebView2)
    sections .text 6.12 · .rdata 5.68 · .rsrc 7.87 (иконки)

    В .rdata открытым текстом лежит путь к PDB автора: C:\\Users\\miroy\\Desktop\\CheatHub Antikleak\\CPPLoader\\0x15Loader\\...\\Exploit Launcher.pdb. Внутреннее название проекта: 0x15Loader. Автор: miroy.

  2. C2
    exploit_guard.dll, JNI-мост и лизинговый C2
    192 КБ MSVC 14.50 WinHTTP + WinInet X-Exploit-Lease

    Экспортирует три функции. Две из них со стандартным JNI-неймингом: Java_exploit_lon_security_LaunchGuard_nativeActivate и nativeStop. То есть Java-класс exploit.lon.security.LaunchGuard дёргает натив по своему пакету. Внутри DLL сидит сетевой клиент, шлёт запросы к C2 с кастомным заголовком X-Exploit-Lease:, это токен аренды сессии. Если сервер отказал или сессия истекла, мод получает строку Authorization session expired. Restart the launcher and try again.

    Exports:
      ExploitAcquireLaunchContext
      Java_exploit_lon_security_LaunchGuard_nativeActivate
      Java_exploit_lon_security_LaunchGuard_nativeStop
    
    User-Agent: ExploitGuard/1.1
    Header:     X-Exploit-Lease: <token>

    Два сетевых стека одновременно (WinHTTP + WinInet), это резерв на случай если один заблокирован фильтром или античит-хуком.

  3. C3
    native_sec.dll, антидебаг внутри jar
    32 КБ MinGW-w64 GCC только JNI_OnLoad

    Лежит внутри jar как ресурс META-INF/natives/windows-x86_64/native_sec.dll, распаковывается классом org.example.NativeSecurity во временный файл и грузится через System.load. Наружу торчит один экспорт: JNI_OnLoad. Остальные методы регистрируются динамически через RegisterNatives, чтобы имена не светились в export-таблице.

    Внутренние строки:
      initRuntime
      computeRuntimeToken
      verifyLicense
    
    Антидебаг и hardening:
      IsDebuggerPresent, CheckRemoteDebuggerPresent
      SetProcessMitigationPolicy
      SetSecurityInfo + SetEntriesInAclW  (ACL на процесс)
      NtDelayExecution, NtRaiseHardError  (обход user-hooks)
      VirtualProtect + VirtualQuery       (self-check памяти)
      BCrypt* (SHA-256 + верификация подписи)

    Роль этой DLL: первый круг защиты. Убедиться, что процесс не под отладчиком, что код секций не подменён, посчитать токен рантайма из состояния окружения. Второй круг это уже exploit_guard.dll, который дальше идёт в сеть.

  4. C4
    fabric_1_21_11.jar, сам чит на Fabric
    21 МБ 1806 классов Minecraft 1.21.11 id=exploit

    Мод-ID exploit, license All-Rights-Reserved. Точек входа Fabric у мода нет: вся инициализация идёт через миксины из exploit.mixins.json. Пакет модуля: exploit.lon.*.

    Обфускация двухслойная. Первое: имена файлов .class состоят из комбинирующихся юникод-символов, в листинге видно как ???????Zol??.class. Внутренние this_class в constant pool при этом читаемы, иерархия пакетов восстанавливается. Второе: invokedynamic бутстрап-обёртки на MethodHandles.Lookup. Строки, URL, имена методов и классов кодируются как Base64URL + XOR + Integer.rotateLeft, расшифровываются только в рантайме при первом обращении к call site. Признаки соответствуют Skidfuscator или его форку.

    Bootstrap для строк:
      (Lookup, String name, MethodType, String payload, int keyA, int keyB) -> CallSite
    
    Bootstrap для вызовов:
      (Lookup, String name, MethodType, String payload, int, int) -> CallSite
      внутри: privateLookupIn + findStatic/findVirtual/findSpecial

    Мод тащит с собой три nested jar'а. api-0.32.0.jar и pytorch-engine-0.32.0.jar это DJL (Deep Java Learning) с PyTorch-бэкендом. baritone-1.21.11-SNAPSHOT.jar это форк pathfinding-бота Baritone под свежую версию игры.

§ 03

Стилер vs этот клиент

Не найдено Типичные признаки стилеров и RAT в бинарях
  • CreateRemoteThread, инъекция в чужой процесс
  • WriteProcessMemory, запись в чужую память
  • NtQueueApcThread, APC-инъекции
  • Расшифровка DPAPI над чужими секретами (Chrome, Edge, Firefox login data)
  • Чтение %APPDATA%\\Roaming\\Telegram\\tdata
  • Чтение %APPDATA%\\discord\\Local Storage
  • Обращения к wallet.dat и криптокошелькам
  • Персистентность через Run-ключи, службы, планировщик
  • Строки cookies, autofill, saved passwords в бинарях
  • Размывание трафика по десяткам доменов
Найдено Что реально делает клиент
  • HWID: GetVolumeInformationA + MachineGuid из реестра
  • DPAPI (CryptProtectData), только для своего auth-токена
  • Скачивание runtime.zip и protected.zip с CDN оператора
  • Верификация подписи артефактов через BCryptVerifySignature
  • Прямой JNI-инвок KnotClient.main из скачанного JVM
  • Fabric-миксины на MinecraftClient, Mouse, Keyboard, ClientPlayNetworkHandler
  • AccessWidener делает mutable field_51930/51931 в ExplosionS2CPacket, базовый anti-knockback
  • DJL + PyTorch модель MinaraiModel, эмуляция человеческого движения мыши
  • WebSocket через java.net.http.WebSocket, встроенный чат сообщества
  • Самоуничтожение папки .protected-release после инжекции в JVM
§ 04

Сетевая активность

exploitclient.com/api/{gate,v1,v2} основной фронт

Пользовательский вход в платформу: регистрация, логин, личный кабинет, скачка лоадера, веб-чат сообщества. Всё, что видит человек до запуска игры, находится здесь. User-Agent: ExploitLauncher/Auth/v1.

space.cheathub.tech/api/{gate,v1,v2} встроенный файлообменник

Собственный CDN проекта (не сторонний storage). Отсюда лаунчер тянет runtime.zip (OpenJDK 21 с внутренним билд-именем exploit-jre21-v1), protected.zip с защищённой сборкой Fabric-профиля и DJL-модели.

space.cheathub.tech (X-Exploit-Lease) heartbeat защиты

С этим же CDN общается exploit_guard.dll из работающего процесса Minecraft. Метод nativeActivate получает токен аренды, лизинг периодически обновляется. Без валидного ответа мод сам вызывает nativeStop и выключается.

t.me/exploitclients Telegram

Ссылка на канал проекта, открывается из UI лаунчера. Данные пользователя туда не уходят, это внешний коммуникационный канал.

§ 05

За что антивирусы могут флагать

Из 70 движков VirusTotal три подняли heuristic-эвристику, остальные пропустили. Ни одного сигнатурного попадания по конкретному семейству малвари нет. Ниже разбор, за что именно цепляются ML-модели у Microsoft, Symantec и SecureAge, и почему это объяснимо архитектурой проекта, а не тем, что внутри действительно вредонос.

01
Антидебаг и hardening через NT

В native_sec.dll лежат IsDebuggerPresent, CheckRemoteDebuggerPresent, SetProcessMitigationPolicy, прямые NT-вызовы вместо WinAPI. Тот же паттерн используется в грамотно написанных стилерах, чтобы пережить sandbox-анализ. Эвристики Kaspersky, ESET и Bitdefender на это реагируют.

02
Одноразовые артефакты

Папка .protected-release создаётся, распаковывается, из неё грузятся классы в память JVM, после чего удаляется. Класс exploit.lon.security.LaunchGuard живёт только в heap запущенного процесса. Тот же приём применяют fileless-загрузчики, которые не хотят оставлять DLL на диске.

03
InvokeDynamic обфускация jar

URL, названия сервисов, ключи, имена вызываемых методов, всё внутри мода спрятано в base64-payload и разворачивается в рантайме через MethodHandles.privateLookupIn. Статический сканер видит только зашифрованные строки, поведенчески видит динамические call site. Автоматически повышает риск-скор.

04
Wacatac.B!ml как ML-заглушка

Метка Trojan:Win32/Wacatac.B!ml у Microsoft ставится не по сигнатуре, а по решению облачной ML-модели. Wacatac.B!ml часто вешают на нативные PE без цифровой подписи, с необычными импортами (BCrypt + WinTrust + LoadLibrary из скачанного пути) и WebView2 внутри. У проекта всё это есть по устройству. Реальное семейство малвари здесь не подтверждено ни одним сигнатурным движком.

05
Категория HackTool

Даже если поведенчески вредных действий нет, часть вендоров (в первую очередь Kaspersky) относит такой софт к HackTool.MSIL.Cheat или HEUR:RiskTool. Это политика: софт, автоматизирующий чужую игру в обход правил серверов, они помечают отдельно.

§ 06

Что нашлось внутри

PDB автора не удалён из релизного бинаря лаунчера
C:\\Users\\miroy\\Desktop\\CheatHub Antikleak\\CPPLoader\\
  0x15Loader\\x64\\Release\\Exploit Launcher.pdb
fabric.mod.json: вход в мод только через миксины, три nested jar
{
  "id": "exploit",
  "name": "Exploit",
  "environment": "client",
  "entrypoints": {},
  "mixins": ["exploit.mixins.json"],
  "accessWidener": "exploit.accesswidener",
  "depends": { "minecraft": "1.21.11", "fabric": "*" },
  "jars": [
    { "file": "META-INF/jars/api-0.32.0.jar" },
    { "file": "META-INF/jars/baritone-1.21.11-SNAPSHOT.jar" },
    { "file": "META-INF/jars/pytorch-engine-0.32.0.jar" }
  ]
}
AccessWidener делает мутабельным поле пакета взрыва, базовый anti-knockback
accessible  field   net/minecraft/class_2886  field_51930  F
accessible  field   net/minecraft/class_2886  field_51931  F
mutable     field   net/minecraft/class_2886  field_51930  F
mutable     field   net/minecraft/class_2886  field_51931  F
mutable     field   net/minecraft/class_310   field_1752   I   ; attackCooldown
Пакет ротации использует DJL-модель для эмуляции человеческого прицела
exploit/lon/base/rotation/deeplearnig/DeepLearningManager
exploit/lon/base/rotation/deeplearnig/HumanAimModel
exploit/lon/base/rotation/deeplearnig/HumanAimStepPool
exploit/lon/base/rotation/deeplearnig/MinaraiModel
exploit/lon/base/rotation/deeplearnig/AimDatasetTrainer
exploit/lon/base/rotation/deeplearnig/FloatArrayInAndOutTranslator
; extends ModelWrapper<float[], float[]>
; вход:  [dyaw, dpitch, vyaw, vpitch, dt]
; выход: [stepYaw, stepPitch] со случайной задержкой
Killaura под конкретный сервер: настраиваемый шанс промаха
exploit.lon.client.modules.impl.combat.Aura
  ModeSetting funtimeNew, funtime, funtime2
  NumberSetting FUNTIME_NEW_MISS_CHANCE
  MultiBooleanSetting inventoryScreenGuardTicks, inventoryScreenPaused
  EntityAimPoints$BodyBounds  targetBounds
Community-часть клиента: WebSocket-чат и cloud-конфиги через java.net.http
exploit.lon.community.CommunityClient
  java.net.http.HttpClient           httpClient
  java.net.http.WebSocket            socket
  AtomicReference<UserProfile>       profile
  CopyOnWriteArrayList<CloudConfigCard> cloudConfigs
  String                             apiBase    ; DEFAULT_API_BASE (INDY)
§ 07

Как проверить самому

Разбор сделан статически: PE-анализ трёх нативных бинарей и полный проход по class-pool всех 1806 классов Fabric-мода. Динамика ограничена: Defender-скан всех артефактов и чтение логов лаунчера и Fabric-host после первого запуска в чистой Windows-виртуалке. Инструменты открытые.

  • Разбор PEpefile 2024.8.26
  • ДизассемблерIDA Pro 9.3 · Ghidra 11.x
  • JVM класс-парсерcustom, 130 строк Python
  • Байткодjavap (JDK 21)
  • Антивирус (локально)Windows Defender 4.18.26060.3008
  • Публичная проверкаVirusTotal, 70 движков
SHA256 Exploit-Launcher.exe 67125e70589f81c90e3c3ae9362cd538f87369e4d6e94b1cda7f96ffb29b76f2
SHA256 exploit_guard.dll 9e20c4c19f3014d11f7edf5b5e42ca25006989f3fb1a487a959819ea40d6636c
SHA256 native_sec.dll (внутри jar) b5e4b8675d40f894a7a074525098886842ce79fa28b27fedf2d8210dada5398b
SHA256 fabric_1_21_11.jar 611f72830ba63a2b7631bba3dd285eb02e57e8b9cf7b55c9d509e7f5959c40d2
§ итог

Вердикт

Чит-клиент для Minecraft 1.21.11 с продуманной архитектурой: WebView2-лаунчер, лизинговый гейт защиты, обфусцированный Fabric-мод, DJL-модель для человекоподобного прицела, встроенный чат и cloud-конфиги. По статическим паттернам это не стилер и не RAT: нет инъекций в чужие процессы, DPAPI используется только над своим токеном, персистентность отсутствует, сеть аккуратно разведена по двум доменам одной платформы. VirusTotal показывает 3 из 70 heuristic-детектов у Microsoft, Symantec и SecureAge, все три без имени семейства, 67 сигнатурных вендоров молчат.

Оговорка. Ключевые URL и вызовы в моде спрятаны за InvokeDynamic-бутстрапами. Часть модулей (AutoAuth с полем пароля, CommunityClient с cloud-конфигами, соседство с папкой IAS, где хранятся Microsoft/Mojang-токены альт-аккаунтов) могли бы теоретически быть точками утечки при желании оператора. Пока не расшифрован call site CommunityClient.apiBase и не снят рантайм-трейс всего, что мод отправляет наружу, гарантированное «ничего кроме своего auth» дать нельзя.

Что это Чит-клиент под Minecraft 1.21.11 (Fabric) с AI-aimbot и защитой от лика
Проект Exploit, фронт exploitclient.com, канал t.me/exploitclients, автор miroy

Реальный риск здесь тот же, что у любого чит-клиента: не для системы, а для игрового аккаунта. Заточка модулей под серверы FunTime и FunTime2 явная: отдельные конфиги ротации, авто-фермы, авто-байер, авто-сбор с аукциона. При обнаружении на таких серверах аккаунт улетает в бан.