- Статус
- Оффлайн
- Регистрация
- 13 Фев 2026
- Сообщения
- 682
- Реакции
- 18
Суть проблемы:
Реально ли подменить текстуры игроков или энтити в Minecraft, используя исключительно OpenGL хуки, то есть без вмешательства в JNI и JVM?
Что уже было протестировано:
Пытались отловить аргументы и стэк вызовов в следующих функциях:
Техническая справка по рендерингу:
Майнкрафт (особенно свежие версии) работает через LWJGL и активно использует шейдеры. Если вы хукаете голый OpenGL, вам нужно учитывать несколько нюансов:
Интересно послушать мысли тех, кто реализовывал подобное именно через внешний/внутренний DLL инжект, обходя Java-слой.
Реально ли подменить текстуры игроков или энтити в Minecraft, используя исключительно OpenGL хуки, то есть без вмешательства в JNI и JVM?
Что уже было протестировано:
Пытались отловить аргументы и стэк вызовов в следующих функциях:
- glBegin / glEnd
- glTexImage2D
- glBindTexture
- glArrayElement
- glDrawArrays / glDrawElements
Техническая справка по рендерингу:
Майнкрафт (особенно свежие версии) работает через LWJGL и активно использует шейдеры. Если вы хукаете голый OpenGL, вам нужно учитывать несколько нюансов:
- Скорее всего, энтити отрисовываются через glDrawElements. Чтобы выделить игрока, нужно смотреть на количество индексов (count) — у моделей персонажей оно часто константное.
- Текстуры могут находиться в атласах. Вместо одной текстуры скина вы можете видеть огромный лист со всеми ресурсами.
- В версиях с Core Profile (1.17+) нужно смотреть в сторону glUseProgram. Можно подменять шейдер на свой, который будет заливать модельку цветом (делая чамсы) при определенных условиях.
- Для классических чамсов (сквозь стены) обычно достаточно хукнуть отрисовку и перед вызовом рисования модели прописать glDisable(GL_DEPTH_TEST), а после — вернуть обратно.
Интересно послушать мысли тех, кто реализовывал подобное именно через внешний/внутренний DLL инжект, обходя Java-слой.