c++ - 使用 Hook Engine 时的 ACCESS_VIOLATION

标签 c++ sockets hook

我在使用这个钩子(Hook)引擎时遇到问题 http://www.codeproject.com/Articles/21414/Powerful-x86-x64-Mini-Hook-Engine

函数已正确 Hook ,但当我尝试调用真实函数(原始函数)时,出现错误 ACCESS_VIOLATION。

我的代码

typedef int (__stdcall *MyCloseSocket) (SOCKET s);
MyCloseSocket pTrampolineCloseSocket = NULL;

    int main()
    {
     //...
      HookFunction((ULONG_PTR) GetProcAddress(LoadLibrary(dll), "closesocket"),  (ULONG_PTR) &OwnCloseSocket); 
      pTrampolineCloseSocket = (MyCloseSocket) GetOriginalFunction((ULONG_PTR) OwnCloseSocket);
    }

int OwnCloseSocket(SOCKET fd)
{
        // here successfully. Function is hooked
    return pTrampolineCloseSocket(fd); // but here ACCESS_VIOLATION
}

我做错了什么?谢谢!

最佳答案

如果您可以自由选择 Hook 技术,我推荐我们自己的 Hook 引擎 Deviare,因为它本身可以处理 Hook 的复杂性(远程进程注入(inject)、参数解析、竞争条件),从而提供更高级别的编程接口(interface)。可在 http://www.nektra.com/products/deviare-api-hook-windows/ 获得希望它会加快你的解决方案

关于c++ - 使用 Hook Engine 时的 ACCESS_VIOLATION,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11348165/

相关文章:

c++ - 两个相乘的每个子集的加法

c++ - 如何在默认构造函数中初始化对空字符串的类成员引用

python - Windows xp 和 Linux 中的 Telnet 性能

c - 在 C 和 Windows 中 Hook

javascript - 从 Android 浏览器打开 Instagram

dll - 为什么我们必须将全局钩子(Hook)过程放在单独的 DLL 中

c++ - 重载乘法运算符

c# - 如何获取已打开连接的套接字 ID/句柄/描述符? (.NET,C++,德尔福)

ios - 在 iOS 上通过蓝牙进行类似 TLS 的加密?

c++ - 将 gprof 与 LULESH 基准结合使用