partoftheworlD Опубликовано 23 января, 2019 Поделиться Опубликовано 23 января, 2019 Просто переписываю статью с некоторыми правками, так как на данный момент она не рабочая, да и там черт ногу сломит. Сие действие будет проводить на Counter-Strike: Source, выбор игры не важен. Запускаем x64dbg, открываем файл hl2.exe, для корректного запуска стимовской версии необходимо указать аргументы командной строки: -steam -game cstrike -console -insecure Нажимаем F9, после прогрузки модуля d3d9.dll ставим бряки на: Direct3DCreate9, если игра инициализирует устройство в текущем модуле Direct3DCreate9Ex, если игра инициализирует устройство во внешнем модуле. После установки бряка перезапускаем игру, как только срабатывает бряк выходим из функции и видим откуда она вызывалась. *Немного комментов для лучшего восприятия* Теперь нам необходимо вызвать функцию CreateDevice по её индексу, для этого модифицируем: CALL DWORD PTR DS:[EAX+0x8] на CALL DWORD PTR DS:[EAX+0x40] Либо считаем руками.(Нет) После вызова [EAX+0x40] попадаем в тело функции, ставим на него бряк и перезапускаем игру. Как только сработает бряк, надо будет расширить количество аргументов до 7 в настройках соглашения о вызовах, так как нам нужен 7-й аргумент в прототипе функции CreateDeviceEx, а именно ppReturnedDeviceInterface: HRESULT CreateDeviceEx( UINT Adapter, D3DDEVTYPE DeviceType, HWND hFocusWindow, DWORD BehaviorFlags, D3DPRESENT_PARAMETERS *pPresentationParameters, D3DDISPLAYMODEEX *pFullscreenDisplayMode, IDirect3DDevice9Ex **ppReturnedDeviceInterface ); Хоба. Вот мы и нашли указатель на указатель на устройство с помощью которого можно рисовать внутри игры и которым рисует игра. 1 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость reston Опубликовано 16 марта, 2019 Поделиться Опубликовано 16 марта, 2019 А почему именно делаешь смещение на 0x40, а не условно 0x32 Ссылка на комментарий Поделиться на другие сайты Поделиться
partoftheworlD Опубликовано 16 марта, 2019 Автор Поделиться Опубликовано 16 марта, 2019 33 минуты назад, reston сказал: А почему именно делаешь смещение на 0x40, а не условно 0x32 0x40 смещение на функцию CreateDevice, в принципе подойдет любая функция принимающая в себя указатель на указатель на устройство(ppReturnedDeviceInterface) Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость reston Опубликовано 16 марта, 2019 Поделиться Опубликовано 16 марта, 2019 2 часа назад, partoftheworlD сказал: 0x40 смещение на функцию CreateDevice, в принципе подойдет любая функция принимающая в себя указатель на указатель на устройство(ppReturnedDeviceInterface) Хм, хорошо, а можно пример использования, того что мы нашли Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения