Технический отчёт по ошибке античита VimeWorld «OpenGL patch detected»
Собрано по локальным логам, ETW/WPR-трассе и проверке целостности системного OpenGL.
Дата диагностики: 20 сентября 2026 г.
1. Краткое описание проблемы
При запуске MiniGames/VimeWorld античит сообщает OpenGL patch detected, после чего игровой процесс завершается. Пользователь предварительно отключил оверлеи и автозагрузку, проверил отсутствие сторонних OpenGL DLL.
Попытка снять дамп через ProcDump приводит к сообщению debugger detected on startup; при запущенном Process Monitor лаунчер также закрывается. Поэтому дальнейшая диагностика выполнялась пассивно через ETW/WPR и отдельный процесс PowerShell, без подключения отладчика к VimeWorld
Ключевой результат
Первые 64 байта функции glScalef, прочитанные из памяти отдельного 64-битного процесса PowerShell, байт-в-байт совпадают с теми же байтами в подписанном Microsoft файле C:\Windows\System32\opengl32.dll.
Обнаруженный JMP на glScalef+0x10 также присутствует в файле на диске и ведёт внутрь того же модуля opengl32.dll. Это исключает классический сторонний JMP-hook для проверенного процесса и показывает, что данный переход является частью штатного системного файла.
2. Окружение и версия клиента
Параметр
Значение
Игровой пользователь
Esir
VimeWorld Build ID
prod-393-35202992755
Клиент/ветка
1.8.8_new_anticheat
ОС (по клиентскому логу)
Windows 11, amd64, version 10.0
Java
1.8.0_422-internal, OpenJDK 64-Bit Server VM, VimeWorld
LWJGL
2.9.4
OptiFine
OptiFine_1.8.8_HD_U_H8
GPU
NVIDIA GeForce RTX 3060
OpenGL
4.6.0 NVIDIA 616.92
3. Проверка целостности opengl32.dll / glScalef
Проверка
Результат
Загруженный файл
C:\Windows\System32\opengl32.dll
Версия файла
10.0.26100.8521 (WinBuild.160101.0800)
Производитель
Microsoft Corporation
Authenticode
Valid; signer: Microsoft Windows
SHA-256 всего opengl32.dll
B12A3667AC832B0667418B8A6C0CB107107A5D67D0AC635ED063AC41D0575EDE
glScalef RVA
0x2A720 (.text; file offset 0x2A720)
Сравнение первых 64 байт
MATCH: YES
SHA-256 первых 64 байт (memory)
67c806b9706f02ff5fa1070e08d6372040eed8e1248fd849d75a41bc6c009a56
SHA-256 первых 64 байт (file)
67c806b9706f02ff5fa1070e08d6372040eed8e1248fd849d75a41bc6c009a56
JMP внутри glScalef
glScalef+0x10 → 0x7FF9358BB010
Модуль назначения JMP
C:\Windows\System32\opengl32.dll
Memory bytes = File bytes (64 bytes)
0000: 65 48 8B 04 25 30 00 00 00 48 8B 80 58 0E 00 00
0010: E9 DB 08 0A 00 CC CC CC CC CC CC CC CC CC CC CC
0020: 48 89 5C 24 08 48 89 74 24 10 57 48 83 EC 20 8B
0030: F1 49 8B D8 8B 0D B6 8C 0B 00 8B FA 83 F9 40 73
Интерпретация: в отдельном проверочном процессе первые 64 байта glScalef не были изменены после загрузки: они полностью совпадают с содержимым подписанного файла на диске. JMP по смещению +0x10 является частью этих же дисковых байтов.
Ограничение проверки: эта проверка не доказывает состояние памяти именно внутри игрового javaw.exe в момент срабатывания античита. Однако она делает гипотезу обычного стороннего inline/JMP-hook менее вероятной.
4. ETW/WPR-трасса запуска VimeWorld
Во время воспроизведения проблемы была записана системная ETW/WPR-трасса. Архив vimeworld.zip содержит vimeworld.etl размером 616 562 688 байт. В трассе присутствует командная строка игрового javaw.exe из собственного JRE VimeWorld и пути к используемым графическим/нативным модулям.
Игровой процесс
%APPDATA%\.vimeworld\jre\brainstorm_new_2\windows-amd64\bin\javaw.exe
Античит/клиент
%APPDATA%\.vimeworld\1.8.8_new_anticheat\...
Нативные/графические модули, присутствующие в трассе
C:\Windows\System32\opengl32.dll
C:\Windows\System32\DriverStore\FileRepository\nv_dispi.inf_amd64_...\nvoglv64.dll
%APPDATA%\.vimeworld\1.8.8_new_anticheat\natives\lwjgl64.dll
Типичные DLL-хуки/оверлеи — строковый поиск по ETW
Искомое имя
Результат
RTSSHooks64.dll
не найдено
GameOverlayRenderer64.dll
не найдено
DiscordHook64.dll
не найдено
ReShade
не найдено
Ограничение: отсутствие строки с названием DLL в ETW-файле само по себе не является абсолютным доказательством отсутствия любого возможного вмешательства. Однако вместе с проверкой целостности glScalef и отсутствием типичных overlay DLL это является дополнительным аргументом против обычного OpenGL overlay/hook.
5. Клиентские логи
Проверены latest.log и четыре архивных лога за 19–20 сентября 2026 г. Во всех запусках повторяются одинаковые версии клиента, Java, LWJGL и OpenGL. Поиск по словам OpenGL patch, glScalef, patch detected, hook не дал записей античита. Нет Java stack trace, объясняющего принудительное завершение.
Фрагмент конца latest.log
[07:51:30] Connecting to neo2.vimeworld.com
[07:51:31] MiniDot initialized in 764 ms. 2821 items
[07:51:31] [OptiFine] *** Reloading custom textures ***
[07:51:33] FriendsEvent # ...
[07:51:33] Reconnect using hosts: neo2.vimeworld.com,...
[07:51:34] party cleared
<конец файла>
В логах присутствуют две повторяющиеся ошибки отсутствующих текстур (orange_petsgo.png и dragonstone_guardians/fire.png), после которых клиент продолжает инициализацию и подключение. Признаков связи этих ошибок с OpenGL patch detected в логах нет.
6. Вывод и просьба к технической поддержке
Совокупность данных соответствует возможному ложному срабатыванию / несовместимости проверки целостности OpenGL с текущей системной реализацией opengl32.dll.
Наиболее значимый факт: glScalef в отдельном проверочном процессе совпадает с подписанным Microsoft файлом на диске, включая внутренний JMP. При этом стандартные способы снять дамп или проследить процесс блокируются anti-debug поведением клиента.
Просьба к технической поддержке:
Проверить серверную/клиентскую сигнатуру или алгоритм проверки glScalef / opengl32.dll для Windows 11 с opengl32.dll 10.0.26100.8521 и SHA-256:
B12A3667AC832B0667418B8A6C0CB107107A5D67D0AC635ED063AC41D0575EDE
Если античит ожидает конкретный пролог/хэш функции, прошу проверить, учитывает ли он данный штатный вариант Microsoft.