使用32位应用程序

时间:2015-12-21 12:20:40

标签: c++ winapi 64-bit 32-bit getprocaddress

我有32bit64bit Windows(WOW64)上运行的应用程序。 我需要知道来自WinAPI的几个kernel32.dll函数的地址。

A可以轻松获取32bit kernel32.dll中的函数地址:GetProcAddress效果很好。

但Windows为kernel32.dll32bit应用程序提供了不同的64bit(或者映射到应用程序地址空间中不同地址的库 - 我不确切知道)。 WinAPI应用中32bit功能的地址与64bit app中的地址不同。

如何使用64bit应用从kernel32.dll 32bit获取功能的地址? 我不想仅仅为了知道所需功能的地址而启动单独的64bit进程。

1 个答案:

答案 0 :(得分:1)

我认为这个问题没有意义。由于ASLR,您只能询问"当DLL加载到我的进程(*)"时,函数的地址是什么?并且您无法将64位DLL加载到32位进程中。

(*)对于特定启动后的每个进程运行,答案当前可能是相同的,但我敢打赌,API为每个进程支持kernel32.dll的不同地址。

(当然,64位值可能比32位指针中的值大得多。)