我现在可以实现对win32 api的hook但是对于C语言的库函数的hook 比如 strcpy scanf 等等的hook出现了问题还是像hook api 那样子写么?还是有些别的写法???

解决方案 »

  1.   

    strcpy,scanf是在msvcrt.dll里的,你的代码是怎么写的。
      

  2.   

    我觉得不能hook住C库中的函数。
    API提供被hook的功能是因为API在设计之初已经这样做了,留了被hook的功能。
    除非你自己重新修改一下C库,加入可以被hook的功能,再重新编译。
      

  3.   

    我是把hook的代码封装成dll然后
    char *(__cdecl  *Sysstrcpy)( char *strDestination, const char *strSource )=strcpy;char * __cdecl  Hookstrcpy( char *strDestination, const char *strSource )
    {
    LPVOID check = TlsGetValue(id);
    if(check==false)
    {
    TlsSetValue(id,(LPVOID)true);
    fprintf(p,"strcpy\n");
    fprintf(q,"(char *,char *)=(%s,%s)\n",strDestination,strSource);
    TlsSetValue(id,(LPVOID)false);
    } return Sysstrcpy(strDestination,strSource);
    }在函数入口和出口分别
    DetourAttach(&(PVOID &)Sysstrcpy,Hookstrcpy);
    DetourDetach(&(PVOID &)Sysstrcpy,Hookstrcpy);
    再添头文件<string.h>
    再主程序里面用DetourCreateProcessWithDll打开并注入dll的你说strcpy是msvcrt.dll里的,那能不能先LoadLibrary(msvcrt.dll);
    然后通过GetProcAddress获得strcpy的地址,然后硬编码实现?
      

  4.   


    可是Detours库可以hook自己写的函数。