PDA

Просмотр полной версии : re_virtualtable


Receiver
28.02.2021, 17:02
Описание:Хукер вируальных таблиц. Тестировался только на DirectX 9.

Исходный код: https://github.com/Receiver1/re_virtualtable

Пример использования:

C++:






clVirtualTable

endSceneHook
;
clVirtualTable

resetHook
;
HRESULT __stdcall
endSceneHooked
(
LPDIRECT3DDEVICE9 pDevice
)
{
// Some actions...
return
endSceneHook
.
call
(
eConvention
::
stdcall
,
pDevice
)
;
}
HRESULT __stdcall
resetHooked
(
LPDIRECT3DDEVICE9 pDevice
,
D3DPRESENT_PARAMETERS
*
pParams
)
{
// Some actions...
return
resetHook
.
call
(
eConvention
::
stdcall
,
pDevice
,
pParams
)
;
}
// Entry point
const
UINT hookAddress
{
0xC97C28U
}
;
endSceneHook
.
install
(
hookAddress
,
42
,
&
endSceneHooked
)
resetHook
.
install
(
hookAddress
,
16
,
&
resetHooked
)
;

SR_team
28.02.2021, 17:09
Не вижу this в коллбеке, без него это прокатит только для COM-объектов

Receiver
28.02.2021, 17:12
Не вижу this в коллбеке, без него это прокатит только для COM-объектов


Видимо всё таки придётся добавлять в шаблон соглашение о вызове.

ALF
08.03.2021, 01:18
В call варнинг C4715, по хорошему нужно за switch вернуть значения по стандарту (или в default).

Install и Remove возвращают неправильный результат, ибо VirtualProtect проверяется на true, а должен на false