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(); 这句代码运行后为什么会崩溃?
typedef VOID (CALLBACK* LPFNDLLFUNC1)(VOID);
LPFNDLLFUNC1 lpfnDllFunc1,pl2;
hinstancee= LoadLibrary("dll.dll");
lpfnDllFunc1=(LPFNDLLFUNC1)GetProcAddress(hinstancee, "jianpanhook");
pl2=(LPFNDLLFUNC1)GetProcAddress(hinstancee, "xiezai");
pl2();lpfnDllFunc1(); 这句代码运行后为什么会崩溃?
dll你自己写的吗?
hinstancee= LoadLibrary("dll.dll");
lpfnDllFunc1=(LPFNDLLFUNC1)GetProcAddress(hinstancee, "jianpanhook");
pl2=(LPFNDLLFUNC1)GetProcAddress(hinstancee, "xiezai");
应该先判断一下是不是成功了。
1.dll中没有jianpanhook这个函数, lpfnDllFunc1为NULL
2. jianpanhook 这个函数的参数不是无参的.
3. 最可能的: jianpanhook 这个函数的调用方式是 __stdcall , 而lpfnDllFunc1的调用方式是其他.
4. pl2在内部修改了内存(或删除), jianpanhook 又访问了这些内存,可能这些内存已经非法,so......
如果是非法指针,程序肯定会崩溃