用myhook,detours的64位版本还不开源

解决方案 »

  1.   

    hook不到其他线程的memcpy
    ----
    无论是线程钩子还是全局钩子,都可以hook到其他线程的CreateFileW等WINAPI函数。
    可以hook到本线程的memcpy
    detours2.1 detours3.0都是这样
      

  2.   

    没试过运行时库函数,不知道怎么拿地址 
    --
    你的意思 是各dll memcpy的地址不一样?
      

  3.   


    Copymemcpy = (memcpyFunType)DetourFindFunction("MSVCRT.DLL","memcpy");
    {
    char sz[100] = {0};
    sprintf(sz,"0X%x",Copymemcpy);
    MessageBox(NULL,sz,"ee",MB_OK);
    }
    被hook线程,hook线程的结果一样

    ---------------------------
    ee
    ---------------------------
    0X77c16f70
    ---------------------------
    确定   
    ---------------------------
      

  4.   

    DetourAttach(&(PVOID&)Copymemcpy, SNmemcpy );返回NO_ERROR 
      

  5.   

    如何hook进入点(DetourGetEntryPoint),如何hook memcpy?
     有问题的代码如下:http://pan.baidu.com/s/1gdd1hvXdebug编译不过,Release版加了调试信息也编译不过。
    如果exedofile已经启动,则只勾取exedofile,否则勾取所有线程。
    我的开发工具是VC6,所以memcpy在"MSVCRT.DLL",VC7的memcpy好像在"MSVCRT7.DLL"中。
    以下三种情况,MessageBoxA都勾取成功了,英文标题变成了“hook测试”。
    情况一:
    Copymemcpy = memcpy;
    直接在DllMain 中DetourAttach(&(PVOID&)Copymemcpy, SNmemcpy);
    不会勾取任何线程的memcpy,SNmemcpy也不会被调用
    情况二,
    Copymemcpy = (memcpyFunType)DetourFindFunction("MSVCRT.DLL","memcpy");
    直接在DllMain 中DetourAttach(&(PVOID&)Copymemcpy, SNmemcpy);
    不会勾取任何线程的memcpy,SNmemcpy会被调用
    情况三,
    CopyEnt如何hook进入点(DetourGetEntryPoint),如何hook memcpy?
     有问题的代码如下:http://pan.baidu.com/s/1gdd1hvXdebug编译不过,Release版加了调试信息也编译不过。
    如果exedofile已经启动,则只勾取exedofile,否则勾取所有线程。
    我的开发工具是VC6,所以memcpy在"MSVCRT.DLL",VC7的memcpy好像在"MSVCRT7.DLL"中。
    以下三种情况,MessageBoxA都勾取成功了,英文标题变成了“hook测试”。
    情况一:
    Copymemcpy = memcpy;
    直接在DllMain 中DetourAttach(&(PVOID&)Copymemcpy, SNmemcpy);
    不会勾取任何线程的memcpy,SNmemcpy也不会被调用
    情况二,
    Copymemcpy = (memcpyFunType)DetourFindFunction("MSVCRT.DLL","memcpy");
    直接在DllMain 中DetourAttach(&(PVOID&)Copymemcpy, SNmemcpy);
    不会勾取任何线程的memcpy,SNmemcpy会被调用
    情况三,
    CopyEntryPoint = (int (WINAPI *)(VOID))DetourGetEntryPoint(NULL);
    CopyEntryPoint的值非空。
    但SNEntryPoint根本没被调用。ryPoint = (int (WINAPI *)(VOID))DetourGetEntryPoint(NULL);
    CopyEntryPoint的值非空。
    但SNEntryPoint根本没被调用。
      

  6.   

    改成这个
    CopyEntryPoint = (int (WINAPI *)(VOID))DetourGetEntryPoint((HMODULE)hModule);
    testhook.exe关闭的时候会调用 SNEntryPoint,应该是hook的时候调用
      

  7.   

    Release版hook不到memcpy,指向memcpy的函数指针可以hook到。debug版hook得到。
    vc6源码
    http://pan.baidu.com/s/1o66ZGvS大家帮我看看是什么情况。