HINSTANCE hinstancee;
 typedef VOID (CALLBACK* LPFNDLLFUNC1)(VOID);
LPFNDLLFUNC1 lpfnDllFunc1,pl2;
hinstancee= LoadLibrary("dll.dll");
 lpfnDllFunc1=(LPFNDLLFUNC1)GetProcAddress(hinstancee, "jianpanhook");
 pl2=(LPFNDLLFUNC1)GetProcAddress(hinstancee, "xiezai");
 
 pl2();lpfnDllFunc1(); 这句代码运行后为什么会崩溃?

解决方案 »

  1.   

    不像全局钩子
    dll你自己写的吗?
      

  2.   

    这个和HOOK有关系吗?这三个函数
    hinstancee= LoadLibrary("dll.dll"); 
    lpfnDllFunc1=(LPFNDLLFUNC1)GetProcAddress(hinstancee, "jianpanhook"); 
    pl2=(LPFNDLLFUNC1)GetProcAddress(hinstancee, "xiezai"); 
    应该先判断一下是不是成功了。
      

  3.   

    崩溃原因:
    1.dll中没有jianpanhook这个函数, lpfnDllFunc1为NULL
    2. jianpanhook 这个函数的参数不是无参的.
    3. 最可能的: jianpanhook 这个函数的调用方式是 __stdcall , 而lpfnDllFunc1的调用方式是其他.
    4. pl2在内部修改了内存(或删除), jianpanhook 又访问了这些内存,可能这些内存已经非法,so......
      

  4.   

    这个不就是调用dll吗?不一定是HOOK吧? 加入保护,跟踪调试下就找到原因了
      

  5.   

    这个是显示调用DLL,判断下返回的句柄是否有效,
    如果是非法指针,程序肯定会崩溃