- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用绕行库制作教程。
在旧版本的绕行库 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() 的方式上是否存在一些基本错误?
最佳答案
您错误地使用了 DetourAttach
。在您的案例中正确的用法是:
int(__stdcall* InsertDateTime)(int) = (int(__stdcall*)(int))(0x01006F10);
LONG errorCode = DetourAttach((PVOID*)(&InsertDateTime), (PVOID)MyInsertDateTime);
if(!errorCode) {
//Detour successful
}
请注意,在像 ASLR 这样的技术存在的情况下;你应该使用类似 GetProcAddress 的东西在运行时检索函数的地址,否则可能会导致损坏或崩溃。
关于c++ - 如何使用 DetourAttach() 作为指向十六进制函数的指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16981225/
我正在尝试使用绕行库制作教程。 在旧版本的绕行库 v1.5 中,函数 DetourFunction 用于定义地址,因此 DLL 知道在哪里寻找该函数。 例如,它可以按如下方式使用:
在这里感觉很愚蠢,但为什么这段代码在 Visual 中给我一个语法错误Studio 何时尝试编译它? DetourAttach(&(PVOID&)true_create_file, creat
这只是一个简单的问题。我一直在使用 DetourAttach(&(PVOID &)BindKeyT, BindKeyD); 读取附加到子例程内存地址的东西的源代码,其中 BindKeyT 是地址到内存
我是一名优秀的程序员,十分优秀!