我有32bit
在64bit
Windows(WOW64)上运行的应用程序。
我需要知道来自WinAPI
的几个kernel32.dll
函数的地址。
A可以轻松获取32bit
kernel32.dll
中的函数地址:GetProcAddress
效果很好。
但Windows为kernel32.dll
和32bit
应用程序提供了不同的64bit
(或者映射到应用程序地址空间中不同地址的库 - 我不确切知道)。
WinAPI
应用中32bit
功能的地址与64bit
app中的地址不同。
如何使用64bit
应用从kernel32.dll
32bit
获取功能的地址?
我不想仅仅为了知道所需功能的地址而启动单独的64bit
进程。
答案 0 :(得分:1)
我认为这个问题没有意义。由于ASLR,您只能询问"当DLL加载到我的进程(*)"时,函数的地址是什么?并且您无法将64位DLL加载到32位进程中。
(*)对于特定启动后的每个进程运行,答案当前可能是相同的,但我敢打赌,API为每个进程支持kernel32.dll
的不同地址。
(当然,64位值可能比32位指针中的值大得多。)