-
Автор темы
- #1
По моей логике, я вижу, что этот код создает фиктивное устройство и список нужных функций, с этого списка берёт функцию EndScene и перехватывает его с помощью detours. Этот код прекрасно работает, но я не понимаю, он же перехватывает функцию из фиктивного списка, что за фигня ? Я не понимаю. Как он достает до оригинальной функции? Всё перерыл, но ответа так и не нашёл. Даже Cheat Engine’ом смотрел что,как и куда detours делает.
Code:
IDirect3DDevice9* pDevice = nullptr;
HRESULT res = pD3D->CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, d3dparams.hDeviceWindow,
D3DCREATE_SOFTWARE_VERTEXPROCESSING, &d3dparams, &pDevice);
if (FAILED(res) || !pDevice) {
pD3D->Release();
return 0;
}
void** vTable = *reinterpret_cast<void***>(pDevice);
pEndScene = (endScene)DetourFunction((PBYTE)vTable[42], (PBYTE)hookedEndScene);
if (pEndScene == nullptr)!
return 0;