C++ Directx9 Hook (Dummy Device Method)

Новичок
Статус
Оффлайн
Регистрация
21 Май 2021
Сообщения
13
Реакции[?]
0
Поинты[?]
0
По моей логике, я вижу, что этот код создает фиктивное устройство и список нужных функций, с этого списка берёт функцию 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;
 
Сверху Снизу