Я пытаюсь сделать учебник, используя библиотеку обхода.
В более старой версии библиотеки обхода v1.5 функция DetourFunction использовалась для определения адреса, чтобы DLL знала, где искать функцию.
Например, его можно использовать следующим образом:
InsertDateTime = (int (__stdcall*)(int))DetourFunction((PBYTE)0x01006F10, (PBYTE)MyInsertDateTime)
см. http://www.moddb.com/groups/ibepex/tutorials/function-hooking
Однако в более новых версиях функция изменена на
LONG DetourAttach(
PVOID * ppPointer,
PVOID pDetour
);
где ppPointer — указатель на целевой указатель, к которому будет привязан обход.
Теперь, когда я знаю адрес целевой функции в шестнадцатеричном формате, 0x01006F10, я хочу каким-то образом использовать его в качестве аргумента для ppPointer. Я пытался просто написать:
InsertDateTime = (int (__stdcall*)(int))DetourAttach((PVOID*)0x01006F10, MyInsertDateTime);
и компилируется нормально, но моя программа работает не так, как я думал. Кажется, что программа никогда не ловит функцию с этого адреса.
Итак, в основном мой вопрос заключается в том, правильно ли я использовал указатель на шестнадцатеричный адрес, и, во-вторых, есть ли у меня какие-то фундаментальные ошибки в том, как я использую DetourAttach()?