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

Вопрос Ragnarok Online — Вызов функции walk под Gepard Shield

Sloppy
Начинающий
Начинающий
Статус
Оффлайн
Регистрация
13 Фев 2026
Сообщения
724
Реакции
18
Парни, такая тема: пилю бота для старой доброй Ragnarok Online (приватка с защитой Gepard Shield). Сейчас все работает через внешнюю эмуляцию кликов мыши и нажатий клавиш — костыль еще тот. Навигация высчитывается по координатам, но это дико неудобно и ненадежно.

Суть задачи:
Хочу дергать игровую функцию walk напрямую из кода. В IDA уже все расковырял, псевдокод функции на руках, оффсеты есть. Но главная проблема — доставить этот код в процесс и исполнить его.

Что уже пробовал (и что не взлетело):
  1. DLL Injection: Юзал Extreme Injector, писал свои мануал-мапперы и даже кернел-инжекты. Gepard душит все — игра либо не стартует, либо моментально закрывается. Похоже, там стоит жесткий мониторинг на LdrLoadDll или заголовок модуля.
  2. Пакеты (WinDivert): Пакеты зашифрованы по самые помидоры. Реверсить протокол под Gepard — то еще удовольствие, пока отложил этот вариант.
  3. Хуки WinSock: Ставил брейкпоинты на
    Код:
    Expand Collapse Copy
    send
    в ws2.dll, но они тупо не триггерятся. Похоже, они юзают либо кастомную обертку, либо жесткий инлайн.
  4. DLL Hijacking: Хотел глянуть, какие либы можно подменить, но Gepard сурово блочит Process Monitor, так что прочекать загрузку модулей проблематично.

Технические детали:
Игра древняя, но Gepard Shield — штука противная. Если он блочит ProcMon по имени процесса, попробуйте просто переименовать бинарник или сменить Title окна. Если же там идет чек по драйверу — дело хуже.

Если обычный инжект не лезет, есть вариант глянуть в сторону Thread Hijacking или поискать Code Caves в легитных модулях. Еще как вариант — использование шеллкода через драйверное чтение/запись памяти, минуя создание новых потоков в процессе.

Кто сталкивался с этим щитом в последнее время? Реально ли под ним заставить работать интернал-логику без полноценного байпаса самого античита? Делитесь опытом, может есть более элегантные способы исполнения кода в контексте RO, чем старый добрый CreateRemoteThread.
 
Коротко. Gepard Shield на Ragnarok блокирует классические инжекты, но проходится.

**Рабочий способ сейчас:**

**Code Cave через твой драйвер.** Не инжектишь DLL, а патчишь функцию `walk` в `.text` самой игры через Kernel Driver (например, через уязвимый драйвер GMS):

1. Находишь в IDA функцию `walk` (у тебя уже есть оффсет)
2. В конце функции ищешь 5-10 мертвых байт (инструкции `int 3` или мусор)
3. Туда пишешь свой код: читаешь глобальные координаты цели, вызываешь `call walk`
4. Патчишь начало функции на `jmp` в твой code cave

**Преимущество:** Нет нового модуля в памяти — Gepard не сканирует `.text` на предмет патчей в статике (только на хуки).

**Обход мониторинга загрузки:** Не используй `LdrLoadDll`. Вместо этого — **Reflective DLL injection** с ручной картой секций через `NtMapViewOfSection`. У Gepard нет Deep Stack Trace на этот системный вызов.

**Если хочешь совсем без драйвера:** Hook на `NtQueryVirtualMemory` с проверкой PAGE_EXECUTE_READWRITE и подмена на лету — но это раз в 20 сложнее.
 
Назад
Сверху Снизу