DWORD dwLoadLibrary = (DWORD)GetProcAddress(GetModuleHandleA("kernel32.dll"), "LoadLibraryA");
当我转到 OllyDbg 中的返回地址时,我可以看到该地址指向跳转到 LoadLibraryA 的真实地址的代码。我想获得 LoadLibraryA 的真实地址,它不会改变,因为 kernel32.dll 在每个进程中的相同位置加载,而且我想知道为什么 GetProcAddress 不返回真实地址。
最佳答案
您正在获取 kernel32.LoadLibraryA
的“真实”地址,因为 GetProcAddress()
返回真实地址。只是 kernel32.LoadLibrayA
的实现从 kernel32.dll
移动到了 kernelbase.dll
,结果 kernel32 .LoadLibraryA
仅包含一条指令:
jmp dword ptr[kernelbase.LoadLibraryA]
如果您查看 kernel32.dll
中的更多函数,其中许多函数也具有相同的模式:
kernel32.somefunc:
jmp [kernelbase.somefunc]
关于windows - GetProcAddress 不返回 LoadLibraryA 的真实地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44164344/