首先要知道一点:LoadLibrary在加载.exe文件时,并不会处理其中的iat
因此,如果你使用下面的代码可能会导致程序出现访问异常c0000005:
hm=LoadLibrary("xx.exe");
aFunc=GetProcAddress(hm,"aFunc");
aFunc();(如果在该函数中调用了exe中IAT的API地址则会出现内存访问异常)
如果不做其他处理,目前似乎只有在这种情况下才能正常使用EXE中的导出函数:
某个exe调用了某个dll中的函数,该函数再调用exe中的导出函数
可以这样写:
exe端:
//首先,写一个导出函数:
extern "C" __declspec(dllexport) exe_export()
{
//some code here
}
//其次,在某个场合下调用dll中的函数,让该函数再来调用自己内部的函数
GetProcAddress(hm,"afunc");
afunc();
dll端:
afunc()
{
GetProcAddress(GetModuleHandle(NULL),"exe_export");
exe_export();
}
作者声明:没什么技术含量,抱砖引玉。转载请注明“作者:凭凡”
参考资料:高端调试论坛网名为“手语”的文章
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)