Hooking: 1. Открыть OllyDbg. Запустить CS. 2. Поиск функции, которую хукаем. 3. Просчитывайте функции и подфункции пока не дойдете до call / jmp использованием адреса в разделе данных. 4. Вычислить положение, параметры в стеке hook call / jmp. hook call / jmp от #3 Нужно использовать этот хук, чтобы изменить функции стека, и использовать RET для возврата на ваш фактический обработчик (Полезно, если вы хотите после фактической функции сделать -> сообщение V_CalcRefdef) Вызова функции двигателя, не вызывая хуки: 1. Написать класс для копирования функций из образа диска (например, GetLocalPlayer) 2. Исправить RVA и релоки. 3. Вызвать эти функции.
Обход OpenGL и скриншотов: 1. TLS Hook glReadPixels (вы можете изменить это). Данными glSwapBuffers PTR hook в GameOverlayRenderer.dll (посмотреть его в Olly, как описано выше). 2. Сделать снимок каждые 10 секунд с RGB pixelmode (3 байта). 3. Если glReadPixels так и называется -> использовать буфер из наших скриншотов 4. weeeh glReadPixels hook кажется сломанной с момента последнего обновления ... просто подключить это дерьмо в драйвере минипорта GL или что-то. Графика: непосредственно вызывать GL функции в драйвере мини-порта, как EAC hook.
WorldToScreen: Просто используйте глобальный экземпляр playermove_s, чтобы получить все, что нужно , я добавил еще несколько примеров для HUD_Redraw, CreateMove, glPopMatrix, HUD_KeyEvent и SVC_Sound. Кроме того, есть класс, чтобы украсть функций из образов дисков. Это далеко от "правильно" реализованы, но должны дать вам идею кода для обхода.
|