Исследовательский комплекс, Game SDK и набор инструментов для реверс-инжиниринга и разработки под World of Warcraft 3.3.5a (Wrath of the Lich King, Build 12340).
Проект объединяет в себе три ключевых направления:
- Внутриигровой модуль (
wotlk.dll+injector.exe) — перехват функций, исследование и обход подсистемы античита Warden, Game SDK для прямого взаимодействия с движком клиента, навигация Detour и фреймворк игрового бота. - Редактор карт и навигации (
map-editor) — автономное высокопроизводительное 64-битное приложение на DirectX 11 и Dear ImGui для визуализации навигационных сеток (TrinityCore.mmaps), редактирования графов дорог и точек интереса (POI), анализа рельефа и симуляции поиска пути. - Исследовательская база данных (
docs/) — детальные технические статьи, дампы модулей Warden, анализ алгоритмов шифрования (SRP6, RC4), спецификации протоколов и скрипты автоматизированного анализа.
- Архитектура проекта
- Компоненты системы
- Структура репозитория
- Сборка и запуск
- Быстрый старт
- Дисклеймер
+-------------------------------------------+
| WoW Client 3.3.5a |
| (Wow.exe) |
+---------------------+---------------------+
|
[In-Process Injection] | [Hardware Breakpoints + VEH]
v
+------------------+ LoadLibraryExA +-----------------------------------+
| injector.exe | ----------------------> | wotlk.dll |
| (Console, x86) | | (C++20 In-Process) |
+------------------+ +-----------------+-----------------+
| |
|-- Event-driven safe unload |-- Warden Bypass & Spoofing
| (wotlk_unload_event) |-- DirectX 9 ImGui Overlay & Radar
|-- Game SDK (ObjectManager, Unit, Spell)
|-- Detour Navmesh Navigation (NavHelper)
+-- Bot Framework & Action Queue
+--------------------------------------------------------------------------------+
| map-editor (Standalone, x64) |
| DirectX 11 + Dear ImGui + Recast/Detour + StormLib |
+--------------------------------------------------------------------------------+
| |
|-- 2D Canvas & 3D Orbit/Free Viewport |-- Navmesh (.mmtile) Streaming
|-- TrinityCore Terrain (.map) & Buildings (.vmtile) |-- Detour Pathfinding Testing
|-- World Graph & Road Graph Editor |-- Topology Validation & Height Sampling
+-- Direct Import from Python Road Extraction Pipeline (ADT MCAL)
| Модуль | Архитектура | Технологии | Назначение |
|---|---|---|---|
map-editor |
x64 Windows | C++20, DirectX 11, Dear ImGui, Recast/Detour, StormLib | Визуализатор навигационных сеток, 3D рельефа и редактор графов дорог/маршрутов |
wotlk |
x86 (Win32) | C++20, MinHook, DirectX 9, Dear ImGui, Recast/Detour, glog | Внутриигровая DLL: Game SDK, обход Warden, оверлей, бот-логика |
injector |
x86 (Win32) | C++20, WinAPI, glog | Загрузчик DLL в процесс Wow.exe с поддержкой горячей выгрузки без крашей |
road_extraction |
Python 3.10+ | NumPy, SciPy, scikit-image, NetworkX, StormLib | Экстракция дорожной сети из альфа-карт текстур ADT в формат WorldGraphData |
shared |
MSBuild / C++ | Property sheets (.props), glog custom sinks |
Общая конфигурация компилятора, путей библиотек и логирования |
map-editor — это отдельное 64-битное десктопное приложение для работы с пространственными данными World of Warcraft 3.3.5a. Оно создано для визуализации геометрических структур движка, разметки путей перемещения персонажей и тестирования алгоритмов навигации вне игрового клиента.
- Рендеринг Navmesh: Прямая загрузка тайлов TrinityCore
.mmtile(Detour NavMesh с заголовками MMAP). Рендеринг триангулированной сетки проходимости через DirectX 11 с кешированием вершинных буферов и поддержкой уровней детализации (LOD). - Фоновые тайлы миникарты: Потоковое чтение текстур
.blpнапрямую из игровых архивов MPQ (через StormLib) с использованием таблицы трансляции хешейmd5translate.trs. - Координатная сетка: Адаптивная сетка мира с шагом 10 / 100 / 1000 ярдов и отображением границ ADT тайлов (от 0,0 до 63,63).
- Управление слоями: Независимое включение/отключение видимости слоев рендеринга (Navmesh, миникарта, сетка, POI-граф, дорожный граф, маршруты, путь тестирования).
- Камера: Орбитальная камера (свободное вращение вокруг фокуса, масштабирование, панорамирование) и режим свободной камеры (WASD + мышь). Возможность привязки камеры к виртуальному агенту/игроку.
- Геометрия рельефа: Потоковое чтение карт высот TrinityCore (
.map), триангуляция рельефа с учетом отверстий (holes), динамическое направленное освещение и несколько режимов затенения (Solid, градиент высот, затенение по уклону). - WMO и M2 объекты: Загрузка моделей зданий и декораций из спавн-листов
.vmtile. - Полупрозрачный Navmesh: Наложение сетки проходимости поверх 3D рельефа с регулируемой прозрачностью и подсветкой ребер.
- Симуляция движения агента: Интерактивная установка стартовой и целевой точек, мгновенный расчет пути через Detour, анимация перемещения маркера игрока по траектории с настраиваемой скоростью (1x–10x).
- Три режима работы: Только просмотр (Read-Only), редактирование POI-графа мира (World Graph) и редактирование дорожной сети (Road Graph).
- Инструменты редактирования:
Draw Mode (D): Потоковое добавление цепочки узлов кликами мыши с автосоединением и автоматическим расщеплением ребер при клике на существующие сегменты.Edge Mode (E): Создание направленных и двунаправленных связей между узлами.Split Edge (S): Вставка нового узла в существующее ребро в точке курсора.- Групповые операции: выделение рамкой / лассо, объединение узлов (merge в центроид), выравнивание цепочек (straighten path), массовое изменение фракций и типов ребер.
- Terrain Height Sampling: Инструмент автоматического проецирования узлов графа на рельеф местности с расчетом точной координаты
Z. - Валидатор графа (Issue Panel): Автоматическое выявление топологических проблем — изолированных узлов (orphans), несвязных компонент, чрезмерно крутых уклонов, тупиков и разрывов между дорожными сегментами.
- Undo / Redo: Полная история действий до 100 шагов с изолированными стеками для каждого типа графа.
Модуль инжекции спроектирован для надежного внедрения исследовательского кода в адресное пространство 32-битного клиента Wow.exe.
injector.exe:- Находит запущенный процесс
Wow.exeили переходит в режим ожидания его запуска. - Выполняет инжекцию через удаленный поток с флагом
LOAD_WITH_ALTERED_SEARCH_PATH, гарантируя корректную подгрузку зависимостей DLL из рабочей папки. - Поддерживает безопасную команду горячей выгрузки:
injector.exe --eject
- Находит запущенный процесс
wotlk.dll:- Инициализирует консоль отладки (
AllocConsole) с включенной поддержкой ANSI-эскейп последовательностей для цветного логирования (Googleglog). - Перехватывает вызовы DirectX 9 (
EndScene/Reset), встраивая интерфейс Dear ImGui прямо в процесс игры. - Корректно завершает работу при выгрузке: восстанавливает оригинальные прологи перехваченных функций, закрывает дескрипторы и вызывает
FreeLibraryAndExitThread, исключая взаимные блокировки (loader lock deadlocks).
- Инициализирует консоль отладки (
В проекте реализован комплексный исследовательский фреймворк для анализа и нейтрализации серверной системы защиты Warden (патч 3.3.5a):
- Hardware Breakpoints + VEH (Vectored Exception Handling):
- Использование отладочных регистров процессора
DR0–DR3для перехвата потока выполнения без модификации байтов в кодовых секциях памяти. - Позволяет полностью исключить детекты Warden, проверяющие собственную память и код игры на наличие байтов
0xE9(JMP),0xCC(INT3) или хуков MinHook.
- Использование отладочных регистров процессора
- Shadow Copy (.text section):
- Формирование теневой копии оригинальной секции исполняемого кода игры, считанной непосредственно с чистого бинарного файла на диске.
- Прозрачная подмена адресов чтения при сканировании памяти: когда Warden читает модифицированный участок кода (
MEM_CHECK), ему возвращаются чистые оригинальные байты.
- PEB Unlinking:
- Исключение
wotlk.dllиз двухсвязных списков загруженных модулей PEB (InLoadOrderModuleList,InMemoryOrderModuleList,InInitializationOrderModuleList), что нейтрализует обнаружение черезMODULE_CHECK.
- Исключение
- Перехват криптографических контекстов RC4:
- Перехват генератора псевдослучайной последовательности (PRGA) шифра RC4 внутри динамически подгружаемых модулей Warden.
- Автоматическое определение соглашений о вызовах (поддерживается 6 вариантов
calling convention) и захват незашифрованного открытого текста пакетов до их отправки на сервер. - Резервный механизм клонирования S-box (256-байтного массива состояний) в приватной памяти.
- Подмена ответов (Spoofing):
- Модуль автоматического синтеза корректных ответов на проверки:
HASH_REQUEST,MODULE_CHECK,DRIVER_CHECK,PROC_CHECK,MPQ_CHECK,LUA_EVAL.
- Модуль автоматического синтеза корректных ответов на проверки:
- Статический и динамический анализ модулей:
- Алгоритмический разбор RLE-упакованных полиморфных модулей Warden (не являющихся стандартными PE-файлами).
- Поиск деревьев диспетчеризации (dispatch chains) и автоматическое извлечение таблиц типов проверок (
type IDs).
Game SDK представляет собой набор высокоуровневых C++ абстракций над внутренними структурами игрового клиента Build 12340:
ObjectManager: Потокобезопасный обход связанного списка игровых объектов, фильтрация по GUID и типу (игроки, NPC, игровые объекты, динамические объекты).Unit&Player: Чтение характеристик (HP, мана, энергия, уровень, ауры, баффы/дебаффы, статус каста заклинаний).Movement: Программный интерфейс к механизму ClickToMove (CTM), разворот персонажа (SetFacing), прыжки и контроль остановки.Spell: База заклинаний, проверка кулдаунов, вызов заклинаний по ID и имени.LuaBridge: Выполнение защищенного внутриигрового Lua-кода через движокFrameScript_Executeс возвратом значений в C++.SEH Memory Guard: Безопасное чтение памяти структур через Structured Exception Handling (__try/__except), предотвращающее аварийное падение клиента при обращении к невалидным указателям.
NavHelper: Интеграция библиотеки Detour NavMesh непосредственно в процесс клиента. Построение гладких траекторий на основе TrinityCore.mmaps.- NPC-Avoidance Pathfinding: Динамический скан угроз вокруг персонажа с огибанием зон агро враждебных мобов при расчете маршрута.
- CTM Stop Fix: Корректная остановка персонажа при достижении путевых точек без микрорывков и паразитных пакетов движения.
- Action Queue & Tools: Очередь модульных действий бота (
move_to,interact,loot,wait, инструменты работы с квестами и диалогами NPC). - Radar Overlay: Внутриигровой 2D-радар на Dear ImGui с отображением окружающих мобов, уровня их агрессии, игроков и линии проложенного навигационного пути.
В директории map-editor/docs/scripts/road_extraction/ расположен автономный инструмент на Python для автоматического извлечения геометрии дорог из игровых архивов MPQ:
cd map-editor/docs/scripts/road_extraction
python -m src.main --client "C:\Games\World of Warcraft 3.3.5a" --map Azeroth --all- Принцип работы:
- Извлечение файлов ландшафта
.adtиз MPQ архивов через StormLib. - Декодирование альфа-карт текстур (
MCALчанки) и сопоставление текстур дорог (брусчатка, гравий, грунтовые дороги) по сигнатурам. - Бинаризация масок проходимости, скелетизация через
scikit-image. - Построение графа с помощью
NetworkX, фильтрация коротких паразитных тупиков и упрощение ломаных алгоритмом Рамера — Дугласа — Пекера (RDP). - Экспорт дорожной сети в формат JSON, полностью совместимый с загрузчиком
WorldGraphDataвmap-editor.
- Извлечение файлов ландшафта
wotlk-utils/
├── injector/ # Загрузчик DLL (x86 Console Application)
│ ├── src/ # Точка входа, логика инжекции и выгрузки
│ └── injector.vcxproj # Проект Visual Studio
│
├── map-editor/ # Standalone 3D/2D редактор карт и навигации (x64)
│ ├── src/
│ │ ├── camera/ # Орбитальная и свободная 3D камеры
│ │ ├── data/ # Чтение .map, .vmtile, .mcal, кэширование
│ │ ├── editor/ # Инструменты рисования узлов, ребер, Undo/Redo
│ │ ├── mpq/ # Интеграция со StormLib для чтения BLP и DBC
│ │ ├── navmesh/ # Загрузка TrinityCore mmaps и интеграция Detour
│ │ ├── render/ # DX11 пайплайн: террейн, navmesh, 3D оверлеи
│ │ └── ui/ # Панели Dear ImGui (слои, свойства, лог, легенда)
│ ├── docs/ # Документация редактора, форматы и чейнджлоги
│ │ └── scripts/
│ │ └── road_extraction/ # Python пайплайн экстракции дорог из ADT
│ └── map-editor.vcxproj # Проект Visual Studio
│
├── wotlk/ # Внутриигровая библиотека (x86 In-Process DLL)
│ ├── src/
│ │ ├── bot/ # Фреймворк бота, тулы, очередь действий
│ │ ├── game/ # Game SDK: ObjectManager, Unit, Spell, Movement, Lua
│ │ ├── hooks/ # DirectX9, MinHook, FrameScript, HWBP + VEH хуки
│ │ ├── navigation/ # Внутриигровой навигатор NavHelper (Detour)
│ │ ├── offsets/ # Смещения функций и полей для Build 12340
│ │ ├── overlay/ # Dear ImGui оверлей, 2D радар, монитор статов
│ │ └── warden/ # Модуль анализа, дешифрования и обхода Warden
│ ├── docs/ # Исследования, статьи по протоколу, офсеты, задачи
│ │ ├── game_data/ # Дампы модулей Warden, DBC файлы, графы
│ │ ├── reference/ # Научные реверс-инжиниринг пейперы и офсеты
│ │ └── scripts/ # Python скрипты анализа диспетчеров Warden
│ └── wotlk.vcxproj # Проект Visual Studio
│
├── shared/ # Общие .props файлы MSBuild (vcpkg, ImGui, Detour, glog)
└── wotlk-utils.sln # Главное решение Visual Studio 2022
- ОС: Windows 10 / 11 (x64)
- IDE: Visual Studio 2022 (с установленным набором «Разработка классических приложений на C++»)
- Стандарт C++: C++20
- Пакетный менеджер: vcpkg
- Python: 3.10+ (опционально, для скриптов анализа и экспорта дорог)
Перед сборкой установите необходимые библиотеки. Обратите внимание на разрядность: внутриигровой модуль и инжектор компилируются под x86, а редактор карт — строго под x64.
# 1. Зависимости для wotlk.dll и injector (x86 / Win32)
vcpkg install glog:x86-windows
vcpkg install minhook:x86-windows-static-md
vcpkg install recastnavigation:x86-windows-static-md
# 2. Зависимости для map-editor (x64)
vcpkg install imgui[dx11-binding,win32-binding]:x64-windows
vcpkg install glog:x64-windows
vcpkg install nlohmann-json:x64-windows
vcpkg install recastnavigation:x64-windows
vcpkg install stormlib:x64-windowsПримечание: Если ваш каталог vcpkg установлен не в C:\vcpkg, скорректируйте пути в файлах shared/*.props.
- Откройте файл решения
wotlk-utils.slnв Visual Studio 2022. - Сборка внутриигровых компонентов (
wotlkиinjector):- Выберите конфигурацию Release (или Debug) и платформу Win32 (x86).
- Выполните сборку проектов
injectorиwotlk.
- Сборка редактора карт (
map-editor):- Переключите платформу на x64.
- Выполните сборку проекта
map-editor. Необходимые динамические библиотеки (glog.dll,StormLib.dllи др.) автоматически скопируются в выходную директорию сборки.
- Запустите
map-editor.exe. - В верхнем меню укажите пути к игровым ресурсам:
- File > Set mmaps Directory — выберите папку
mmaps/(данные навигации TrinityCore). - File > Set WoW Directory — укажите корень установленной игры WoW 3.3.5a (для чтения текстур миникарты из MPQ архивов).
- File > Set mmaps Directory — выберите папку
- Загрузите граф мира через File > Open World Graph... (например,
wotlk/docs/game_data/world_graph.json). - Для переключения в 3D режим нажмите
Ctrl+2(возврат в 2D —Ctrl+1). - Для симуляции пути кликните на карте правой кнопкой мыши или используйте сочетания
Ctrl+Click(старт) иShift+Click(финиш).
- Запустите
injector.exe(приложение перейдет в режим ожидания клиента). - Запустите клиент
Wow.exeверсии 3.3.5a (12340). - Инжектор автоматически внесет библиотеку
wotlk.dll, после чего в отдельном консольном окне отобразится лог перехвата функций и статус подсистемы Warden. - Внутри игры появится оверлей ImGui со статистикой персонажа и навигационным радаром.
- Для корректной выгрузки DLL выполните:
injector.exe --eject
Данный проект разработан исключительно в образовательных, исследовательских целях и для обратной разработки (reverse engineering) программного обеспечения. Все материалы предоставляются по принципу «как есть». Разработчики не поощряют использование данных наработок для нарушения пользовательских соглашений на публичных игровых серверах.