🟩 Экспертиза компьютерных игр: айтишный взгляд на реверс-инжиниринг

🟩 Экспертиза компьютерных игр: айтишный взгляд на реверс-инжиниринг

Введение

👾 Хей, хабровчане и гик-сообщество! Если вы когда-нибудь реверсили игры, ковыряли ассеты Unreal Engine или писали читы для CS:GO, то представьте, что это можно делать легально и за деньги, да ещё и в рамках судебных процессов. 🧑‍💻 Сегодня разбираем экспертизу компьютерных игр — когда суд вызывает не свидетеля, а настоящего хакера в белом пальто, чтобы он доказал, что один разработчик скопировал чужой код, а другой запилил подлый бэкдор в лутбоксы. 🎮 Будет много терминов, гиковских штук, тулчейнов, реал-кейсов и жёстких технических разборов. Погнали! 🔥

Раздел 1. Что такое экспертиза компьютерных игр на языке IT-специалиста

🐧 Для айтишника экспертиза компьютерных игр — это процесс криминалистического анализа игрового софта, включающий: статический и динамический анализ бинарей, реверс-инжиниринг игровых движков, декомпиляцию C#/Java/C++ кода, сравнение ассетов (моделей, текстур, анимаций), трассировку сетевых протоколов и профилирование производительности. 🛠️ По сути, это аналог пентеста, но с процессуальным статусом и возможностью отправить разработчика-пирата на бабки. В отличие от обычной компьютерно-технической экспертизы, тут нужно знать Unity, UE, Godot, а также уметь отлаживать шейдеры и лазать по дампам памяти. 🧠

Раздел 2. Инструментарий: что ставим на комп эксперту

💻 Эксперт по играм — это чувак с ноутбуком, на котором установлено:

  • IDA Pro / Ghidra — дизассемблеры для.exe,.dll,.so (взломщики бинарного кода).
  • dnSpy / ILSpy — для декомпиляции игр на Unity (C#.NET).
  • UE Viewer (UModel) / FModel — для вытаскивания моделей, текстур и анимаций из игр на Unreal Engine.
  • AssetStudio — аналог для Unity.
  • RenderDoc — графический дебаггер (захват кадров, анализ шейдеров).
  • x64dbg / WinDbg — отладчики уровня ассемблера (ловим хуки и инжекты).
  • Wireshark + tcpdump — анализ сетевого трафика (что игра шлёт на сервер).
  • Cheat Engine (в лабораторных условиях) — для поиска адресов здоровья, патронов и проверки читов.
  • Python + Jupyter Notebook — для написания скриптов сравнения кода и ассетов.
  • Git + diff-инструменты — для сравнения исходников, если они есть.
    Всё это должно быть лицензионным (да, лицензия на IDA Pro стоит как крыло самолёта, но мы оплатили). 💸

Раздел 3. Кейс #1: Реверс-инжиниринг мобильной игры — как нашли копию точь-в-точь

📱 Суть: Студия «А» выпустила хайповую мобильную RPG. Через полгода вышла игра «Б», у которой геймплей, уровни, расположение врагов и даже баги совпадали на 90%. Исходников «Б» не давали, ссылались на коммерческую тайну.
🛠️ Что сделал эксперт:

  • Взял APK обеих игр, распаковал через apktool.
  • Для игры «А» (Unity, C#) декомпилил код через dnSpy, получил читаемый C#.
  • Для игры «Б» — то же самое.
  • Запустил скрипт на Python, который сравнил все классы и методы, игнорируя имена переменных.
  • Выяснилось, что 94% логики идентично, включая уникальную формулу расчёта урона (Damage = (atk^1.3)/(def^0.7) * random(0.9,1.1), причём константы 1.3, 0.7, 0.9, 1.1 были жёстко зашиты).

Дополнительно нашёл в коде игрушки «Б» отладочный лог «DEBUG: GameA legacy calc», который забыли удалить.
⚖️ Итог: Суд признал плагиат. Взыскали 25 млн рублей. Экспертиза компьютерных игр в действии. 🔥

Раздел 4. Кейс #2: Читер vs админы — разборка с aimbot-ом

🎯 Сцена: Про-геймер забанен в турнире по шутеру. Говорит, что он просто «очень круто играет». Админы утверждают — использует aimbot. Суд назначил экспертизу.
🕵️ Эксперт:

  • Получил дамп памяти с ПК геймера (45 ГБ дампа).
  • Запустил Volatility, вытащил список процессов.
  • Обнаружил, что в память игры инжектирована DLL с названием «firebot.dll».
  • Дизассемблировал эту DLL в IDA Pro, нашёл функцию CalcAimAngle, которая вычисляла смещение прицела на 4 пикселя к голове противника.
  • Установил точку останова в отладчике на вызов этой функции — сработала при каждом выстреле.

Дополнительно: в логах античита были записи о подозрительных патчах памяти (операции WriteProcessMemory на адреса функций просчёта видимости).
📢 Вывод: чит 100% присутствует. Суд отклонил иск, геймер покрыл судебные издержки (260 тыс. руб.). 🛡️

Раздел 5. Кейс #3: Лагает игра — чья вина? Тестирование производительности

🐌 Контекст: Издатель заказал разработчику игру на Unreal Engine 5 для PS5. ТЗ: 4K, 60 FPS, стабильно. Реальность: 25 FPS при скоплении врагов. Разработчик говорит «у вас консоль пыльная, чистите».
⚙️ Эксперт приехал с devkit:

  • Установил игру на чистую PS5 devkit.
  • Запустил PlayStation Profiler, Unreal Insights.

Снял метрики:

Draw calls: 8500/кадр (должно быть <3000).

Overdraw: средний 6x (пиксель перерисовывается 6 раз).

Occlusion culling: выключен — все объекты уровня отрисовываются, даже за стеной.

LOD: не настроены — модели на дальних дистанциях рисуются с максимальным качеством.

Поправил конфиг (включил occlusion culling, выставил LOD) — FPS подскочил до 52.
📊 Заключение: разработчик не выполнил оптимизацию, не соответствует ТЗ. Суд расторг контракт, взыскал 35 млн руб. 🎮

Раздел 6. Реверс-инжиниринг игровых форматов (pak, uasset, assetbundle)

📦 Игры хранят ассеты в архивах. Задача эксперта — вытащить оттуда модели, текстуры и т.д. Инструменты:

  • Unreal Engine: UE Viewer (UModel) — открывает.pak,.uasset,.umap.
  • Unity: AssetStudio, UnityPy — открывает.assetbundle,.resources.
  • Godot:

Собственные движки: пишем скрипт на Python, ищем в hex-дампе сигнатуры (например, PK-заголовки для zip).
После извлечения сравниваем модели через MeshLab, текстуры — через pHash. Пример: в одном деле экспорт ассетов показал, что 3D-модель персонажа конкурента имеет ровно те же вершины, что и модель истца, плюс ту же UV-развёртку (уникальную). Плагиат подтверждён. 🧬

Раздел 7. Анализ шейдеров (GLSL/HLSL/DXBC)

🖌️ Шейдеры (вершинные, пиксельные, геометрические) — ещё один плацдарм для плагиата. Эксперт:

  • Извлекает скомпилированные шейдеры из файлов игры.
  • Для DXBC (DirectX Bytecode) использует 3Dmigoto или dxbc-tools.
  • Декомпилирует в HLSL.
  • Сравнивает код: переменные, математические операции (например, уникальная реализация освещения Блинна-Фонга с нестандартными коэффициентами).

Если шейдеры идентичны (с точностью до имён регистров) — это сильный признак копирования.
В одном кейсе эксперт обнаружил, что шейдер воды из игры «Б» содержит ту же самую опечатку в формуле рефракции, что и игра «А» (деление на z вместо x). 💧

Раздел 8. Лезем в сеть: анализ трафика многопользовательских игр

🌐 Онлайн-игры постоянно шлют пакеты на сервер. Эксперт:

  • Запускает Wireshark и игру.
  • Отфильтровывает трафик по порту (например, 7777 для Unreal).
  • Видит сырые UDP-пакеты.
  • Находит паттерны: первые 4 байта — длина пакета, следующие 4 — тип команды (0x01 = движение, 0x02 = выстрел).
  • Пытается расшифровать, если трафик зашифрован. Если сертификат известен — использует mitmproxy с подменой сертификата.
  • Обнаруживает «секретные» команды (например, пакет с type=0xFF, который отправляет администратор и получает список всех игроков).
    Пример: эксплойт позволял отправлять пакет с type=0xDD и суммой денег, заставляя сервер начислять игроку золото. Эксперт это выявил, и сервер закрыли на патч. 🕳️

Раздел 9. Профилирование производительности: как измерить лаги и фризы

⏱️ Игроки жалуются на лаги. Задача — определить, в чём причина: плохой код или слабое железо. Эксперт использует:

  • Intel VTune — профайлер CPU (поиск узких мест, кэш-промахи).
  • NVIDIA Nsight — профайлер GPU (draw calls, overdraw, загруженность шейдеров).
  • Windows Performance Recorder — сбор ETW-логов (системные события).
  • PresentMon — измерение времени от рендера до вывода на экран (frame time).
    Собирает метрики, строит графики. Если время кадра скачет от 10 до 100 мс — проблема в спорадических процессах (сборка мусора, загрузка ассетов). Если стабильно высокое — недостаток железа или неоптимизированный код. 🔧

Раздел 10. Реверс игровой логики без исходников (чит-мимикрия)

🤫 Иногда исходный код не дают принципиально. Эксперт дизассемблирует бинарник в IDA Pro, ищет знакомые паттерны. Например, в экшн-играх часто используется паттерн «команда» (Command) для обработки действий игрока. Эксперт:

  • Находит таблицу виртуальных функций (vtable) для класса игрока.
  • Определяет адрес функции Player::Update().
  • Анализирует её код, восстанавливает логику на псевдокоде.
  • Сравнивает с другой игрой.
    Это медленно, но работает. В одном деле эксперт потратил 80 часов на реверс 5000 функций и доказал, что 60% алгоритмов совпадают. 💪

Раздел 11. Экспертиза лутбоксов: вероятность выпадения и математика

🎲 Игроки жалуются, что шансы нечестные. Эксперт:

  • Достаёт код RNG (генератора случайных чисел) из исходников или бинаря.
  • Проверяет, используется ли стандартный Mersenne Twister, и правильно ли он инициализируется (от системного времени, от seed).
  • Если есть логи открытий (тысячи записей), проводит хи-квадрат тест.
  • Сравнивает эмпирическую вероятность с заявленной. При расхождении >5% и p-value <0.01 делает вывод о несоответствии.
    Пример: в коде было rand() % 100 < 1 для 1% шанса. Но из-за бага rand() возвращал значения от 0 до 32767, и 1% получался на самом деле 0,98% — мелочь, но статистически значимо (несколько миллионов открытий). Суд обязал изменить описание. 📉

Раздел 12. Анализ анимаций и скелетных ригов

🦴 Движения персонажей — сложный объект для копирования. Эксперт:

  • Извлекает анимационные файлы (.fbx,.anim,.psa).
  • Сравнивает количество костей в скелете (bone count), их иерархию, имена.
  • Вычисляет позиции костей в ключевых кадрах (позвольте метрику расстояния между траекториями).

Если две игры имеют одинаковую анимацию бега с точностью до 0,1 мм, при этом набор костей уникальный — плагиат.
Пример: игра «Зомби-стрелялка» скопировала анимацию атаки мечом из другой игры, включая уникальный изгиб запястья. Эксперт наложил траектории — совпали на 98%. 🗡️

Раздел 13. Экспертиза античит-систем: как они работают и можно ли обмануть

🧙 Античиты (EAC, BattlEye, Vanguard) — сложные драйверы. Эксперт анализирует их в изолированной среде:

  • Проверяет, что античит детектит: хуки на функции ядра, инжекцию DLL, отладчики.
  • Устанавливает, есть ли ложные срабатывания (например, на легитимные программы вроде OBS).
  • Смотрит, собирает ли античит лишние данные (кеши браузера, историю) — нарушение конфиденциальности.
    В одном деле античит блокировал игроков за запуск Discord (из-за конфликта имён процессов). Эксперт подтвердил ошибку, суд обязал разработчика разблокировать аккаунты и выплатить компенсацию. 💬

Раздел 14. Почему экспертиза компьютерных игр — это редкая профессия (и мы выезжаем в регионы)

🚀 В России меньше 30 человек, которые реально могут провести полноценную экспертизу компьютерных игр. Почему?

  • Надо знать C++, C#, ассемблер x86/ARM, HLSL, Python, SQL.
  • Опыт работы с Unity, Unreal, Godot, Source, CryEngine.
  • Уметь пользоваться IDA Pro, Ghidra, dnSpy, RenderDoc, Wireshark, VTune.
  • Понимать сетевое программирование, шифрование, протоколы.
  • Разбираться в 3D-графике (матрицы, кватернионы, нормали, UV).
  • Иметь аттестацию Минюста (отдельный геморрой).
    🔄 Поэтому мы готовы вылетать для проведения данной экспертизы в любой регион России — от Калининграда до Владивостока. ✈️ Приедем с ноутами, write-blocker’ом, devkit’ами, наделаем дампов, спишем хеши и уедем в лабораторию. Все выезды — быстро, легально, с актами и понятыми. 🧳

Раздел 15. Мобильная лаборатория эксперта (чеклист выезда)

🎒 Выездной набор:

  • 2 ноутбука (Win/Linux, 64 ГБ RAM, 2 ТБ SSD).
  • Внешние диски 4 ТБ для копирования образов дисков.
  • Write-blocker (аппаратный для SATA/USB).
  • Хеш-калькулятор (SHA-256).
  • Devkit PS5/Xbox Switch (если надо).
  • Офлайн-копии IDA Pro, Ghidra, Wireshark, Python-скриптов.
  • Виртуалки с Windows 10 LTSC (чистые).
  • Камера для фотофиксации.
  • Бланки актов, печать, удостоверение.
    При выезде: осмотр, клонирование, хеширование, опечатывание, отбытие. Всего 2-8 часов в зависимости от объёма. 📦

Раздел 16. Экспертиза игровых сохранений (нашли читерские правки)

💾 Геймер может подкрутить сохранение в Hex-редакторе. Эксперт:

  • Открывает файл сохранения в HxD.
  • Ищет значения, которые не могут быть такими большими (здоровье 999999 при максимуме 100).
  • Проверяет контрольные суммы: если файл имеет CRC32 в конце, после правки он перестаёт совпадать.
  • Сравнивает с эталонным сохранением из честной игры.
    Пример: игрок изменил количество внутриигровой валюты с 1500 на 999999. Эксперт увидел это в hex-дампе, сделал вывод о нарушении пользовательского соглашения. Бан подтверждён судом. 🚫

Раздел 17. Экспертиза модов (нарушение лицензии или нет?)

🛠️ Разработчики иногда запрещают моды, но игроки их всё равно делают. Эксперт анализирует:

  • Мод — это замена ассетов (перекраска скина) или инжект кода (добавление новой механики)?
  • Использует ли мод официальные инструменты (Steam Workshop, Creation Kit) или взламывает игру?
  • Не нарушает ли мод лицензию (например, переносит контент из одной игры в другую)?
    В одном деле моддер скопировал модель персонажа из платной игры и вставил в бесплатный мод. Эксперт это доказал, суд обязал удалить мод и выплатить 500 тыс. руб. 💰

Раздел 18. Экспертиза VR-игр (трекинг, задержки, иллюзия присутствия)

🥽 VR-игры добавляют новые метрики:

  • Задержка трекинга (motion-to-photon latency) — если >20 мс, начинается укачивание.
  • Точность отслеживания контроллеров (погрешность позиции и поворота).
  • Частота кадров должна быть не ниже 72 FPS (для Quest), а лучше 90 или 120.
    Эксперт подключает оборудование (лазерные трекеры, высокоскоростные камеры) или использует встроенные логи гарнитуры (Oculus Debug Tool). Устанавливает, соответствует ли заявленным характеристикам. 🕶️

Раздел 19. Экспертиза игр на блокчейне (крипто-игр, NFT)

⛓️ Crypto-игры (Axie Infinity, Gala Games) — отдельная песня. Эксперт:

  • Смотрит смарт-контракты на Etherscan (Solidity).
  • Ищет функции, которые могут чеканить (mint) новые NFT без ограничений.
  • Проверяет метаданные NFT: ссылка на IPFS ведёт на реально сохранённый файл или на пустышку?
  • Анализирует насколько игра действительно децентрализована (есть ли административная кнопка).
    В одном деле эксперт обнаружил, что играл на 20 кошельках с одним IP — это не мошенничество, но нарушение правил. Суд признал блокировку аккаунтов правомерной. 🔗

Раздел 20. Экспертиза игр со встроенным шопом (анализ транзакций)

🛒 Внутриигровые покупки — источник споров. Эксперт:

  • Вытаскивает из кода логику списания валюты.
  • Проверяет, не происходит ли двойное списание (запрос к серверу отправлен дважды из-за лага).
  • Анализирует логи сервера (таблицы MySQL/PostgreSQL), ищет аномалии: например, списание средств без соответствующей покупки.
  • Проверяет механизм восстановления покупок при переустановке игры (restore).
    Однажды эксперт нашёл баг: при быстром клике на «купить скин» отправлялось 3 запроса за 0,1 секунды, и списывалась тройная цена. Разработчика обязали компенсировать убытки. 💳

Раздел 21. Экспертиза кросс-платформенных игр (баги на разных ОС)

🔄 Игра работает на Windows, но вылетает на Linux (Steam Deck) или macOS. Эксперт:

  • Ловит краш-дамп (core dump) на проблемной ОС.
  • Анализирует стек вызовов, определяет, какая функция вызывает ошибку.
  • Сравнивает код вызовов API Windows и POSIX.
  • Часто проблема в специфичных для Windows вызовах (CreateFile, RegOpenKey), которые заменены заглушками.
  • Эксперт пишет отчёт: ошибка в игре, требуется портирование. ⚠️

Раздел 22. Экспертиза AI в играх (нейросети и деревья поведения)

🤖 Многие игры теперь юзают ML (машинное обучение). Эксперт:

  • Извлекает.onnx или.h5 файл обученной модели.
  • Загружает в Netron (визуализатор нейросетей).
  • Смотрит архитектуру: количество слоёв, типы, веса.
  • Сравнивает веса двух моделей из двух игр. Если веса совпадают с точностью до 1e-6 — модель скопирована.
  • Для поведенческих деревьев (behavior trees) сравнивает структуру через difftool.
    В одном деле AI-агенты двух игр одинаково реагировали на игрока, и эксперт доказал копирование дерева поведения (совпадение узлов 91%). 🌲

Раздел 23. Частые баги в судебной экспертизе игр (IT-юмор)

😅 Что делают эксперты-неофиты не так:

  • Забывают выключить автообновление игры — версия меняется, хеши не сходятся.
  • Сравнивают Debug-версию одной игры с Release-другой — куча ложных различий.
  • Не учитывают рандомизацию адресов ASLR — получают разные дампы.
  • Пытаются отладить игру с античитом без отключения драйвера — система крашится.
  • Используют пиратскую IDA Pro — заключение признают недопустимым.
  • Сливают улики (логи на флешку без хеша) — адвокат оппонента заявляет о фальсификации.
    Будьте проактивны: фиксируйте хеши, работайте в изолированной среде, используйте лицензионное ПО, документируйте каждый шаг. 📝

Раздел 24. Будущее: как нейросети изменят экспертизу игр

🧠 Через 5 лет:

  • GPT-6 будет писать скрипты для сравнения ассетов и кода за секунды.
  • AI-античиты будут сами искать читы и доказывать их наличие (и возможно, ошибаться).
  • Экспертам придётся разбираться с Deepfake в геймплейных видео (доказательства читерства).
  • Появятся игры на квантовых симуляторах — новый уровень реверса.
    Но пока мы, живые инженеры, нужны. Главное — не забывать пить кофе и комментировать код. ☕

Заключение

🟩 Экспертиза компьютерных игр — это хардкорное IT-ремесло на стыке реверс-инжиниринга, геймдева, сетевого программирования и юриспруденции. 🔥 Если вы разработчик или хакер, знающий C++, дизассемблеры, Wireshark и не боящийся судов, это ваша ниша. Мы — одна из немногих команд в РФ, кто реально это делает. 🎯 Ввиду редкости специалистов, мы готовы вылетать для проведения экспертизы компьютерных игр в любой регион России — хоть на Чукотку, хоть в Дагестан. ✈️ Забиваем лабораторию, клонируем диски, реверсим бинари, пишем отчёты.

🔗 Больше инфы, тулчейнов и кейсов — на нашем сайте: https://krimexpert.ru/ekspertiza-kompyuternyh-igr/

🟩 Статья написана в стиле «айтишник для айтишников». Если нашли опечатку или баг — считайте это фичей. Хорошего реверса и честных судов! 🧙‍♂️

Похожие статьи

Новые статьи

🆘 Экспертиза промышленного оборудования после аварии

Введение 👾 Хей, хабровчане и гик-сообщество! Если вы когда-нибудь реверсили игры, ковыряли ассеты Unreal Engine или писа…

🟩 Экспертиза качества покрытия: от лакокрасочных до гальванических слоев

Введение 👾 Хей, хабровчане и гик-сообщество! Если вы когда-нибудь реверсили игры, ковыряли ассеты Unreal Engine или писа…

🟩 Методология строительно-технической экспертизы мостов и мостовых сооружений

Введение 👾 Хей, хабровчане и гик-сообщество! Если вы когда-нибудь реверсили игры, ковыряли ассеты Unreal Engine или писа…

🟩 Экспертиза аварийности дома

Введение 👾 Хей, хабровчане и гик-сообщество! Если вы когда-нибудь реверсили игры, ковыряли ассеты Unreal Engine или писа…

🟩 Лабораторная экспертиза бетона

Введение 👾 Хей, хабровчане и гик-сообщество! Если вы когда-нибудь реверсили игры, ковыряли ассеты Unreal Engine или писа…

Задавайте любые вопросы

12+6=