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

Вопрос CS 2 — проблема с хуком IDXGISwapChain::Present

Начинающий
Начинающий
Статус
Оффлайн
Регистрация
19 Окт 2025
Сообщения
92
Реакции
4
Народ, кто пытался хукать `IDXGISwapChain::Present` под CS2, нужна помощь.

Делаю свой первый internal под cs2 и, полистав гайды/треды, пришёл к выводу, что самый удобный вариант — хукать `IDXGISwapChain::Present`, чтобы и рисовать, и выполнять чит-логику в одном месте. Проблема в том, что я вообще не понимаю, с какой стороны к этому подступиться.

С хуками в целом знаком: делал detours, trampolines, в AssaultCube уже хуками цеплялся к `wglSwapBuffers` и гонял там отрисовку/функции чита — там всё было достаточно понятно. Но с DXGI / D3D11 всё оказалось сильно сложнее.

Что уже нагуглил и где застрял:

Говорят, что нужно получить конкретный инстанс `IDXGISwapChain`, а потом через vtable этого объекта вытащить адрес метода `Present` и уже его хукать. На практике я вообще не понимаю, как корректно достать этот самый swapchain из игры.

Через IDA нашёл `IDXGISwapChain` в `rendersystemdx11.dll` с помощью Class Informer, но дальше завис — я не до конца понимаю, что именно там смотреть и как это использовать. В интернете многие пишут, что `Present` у swapchain сидит где-то в районе 8-го индекса в vtable, но в том, что я вижу в IDA, отображается всего три функции в таблице, и где там реальный `Present`, я не понимаю.

Отдельный момент: я почти ничего не знаю про Direct3D, так что любые советы по D3D11/DXGI тоже приветствуются.

Если у кого-то есть:

- рабочий подход к тому, как:
- получить экземпляр `IDXGISwapChain` именно из CS2;
- корректно выйти на его vtable и индекс `Present` (какой он там реально сейчас?);
- пример кода или годный ресурс, где этот процесс расписан по шагам;
- или просто направление, куда копать (dxgi, d3d11, x64dbg + символы, и т.п.),

буду очень благодарен за подсказки и любые наводки.
 
Не мучайте себя пожалуйста, откройте в IDA GameOverlayRenderer64.dll в папке Steam, найдите по сигнатуре функцию и посмотрите что там происходит
48 89 5C 24 ?? 48 89 74 24 ?? 57 48 83 EC 30 48 8B 01
 
Не мучайте себя пожалуйста, откройте в IDA GameOverlayRenderer64.dll в папке Steam, найдите по сигнатуре функцию и посмотрите что там происходит
48 89 5C 24 ?? 48 89 74 24 ?? 57 48 83 EC 30 48 8B 01
это сын hex_cat
 
Назад
Сверху Снизу