【发布时间】:2015-12-21 12:20:39
【问题描述】:
我有在64bit Windows (WOW64) 上运行的32bit 应用程序。
我需要知道来自kernel32.dll 的几个WinAPI 函数的地址。
A 可以轻松获取32bit kernel32.dll 中的函数地址:GetProcAddress 效果很好。
但 Windows 为 32bit 和 64bit 应用程序提供了不同的 kernel32.dll(或映射到应用程序地址空间中不同地址的库 - 我不确切知道)。
并且WinAPI函数在32bit应用中的地址与64bit应用中的不同。
如何使用32bit 应用程序从64bit kernel32.dll 获取函数地址?
我不想为了知道所需函数的地址而启动单独的64bit 进程。
【问题讨论】:
-
启动一个单独的 64 位进程并完成它。可能即使这样也无济于事,因为您无法从 32 位进程中创建 64 位进程中的远程线程。我想这就是你想要做的。
-
感谢您的帮助。我不知道 CreateRemoteThread 对于 x32->x64 总是失败
-
你需要一个 64 位的注入器,所以我认为这就是你的答案
-
是的,我得到了同样的结论))
-
从二进制文件导出的符号的 RVA(相对虚拟地址)是一个常量值,在编译时已知。 RVA + HINSTANCE 模块 == 地址(HINSTANCE 与 HMODULE 相同)。
标签: c++ winapi 64-bit 32-bit getprocaddress