每个DLL都有自己的导出函数表,使用它可以查到此DLL所导出的函数的内容。所以我想在程序中得到一些API函数地址时,不使用GetProcAddress函数,而是直接通过这个导出表来计算。这样有一定的防HOOK效果嘛。
    对大多数函数,使用这个方法都得到了正确的地址。但有一些函数,我就发现通过导出表计算出来的地址与使用GetProcAddress函数得到的地址不一样,而且通过导出表得到的这个地址是无法使用的,调用就会出错。我碰到的函数有:Kernel32::EnterCriticalSection,Ws2_32::recv。肯定还有,但我没有再找了。
    我想可能与一些API的内部机制有关,但很是不明白,请教。