我正在尝试使用 detour 库制作教程。
在较早版本的 detour 库 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() 的方式上是否存在一些基本错误?