C++ GetProcAddress 64 位返回 32 位地址

C++ GetProcAddress 64bit returns 32bit address

本文关键字:地址 返回 C++ GetProcAddress      更新时间:2023-10-16

我一直在寻找一段时间,没有找到以下问题的合适答案:

我在 dll 内部将 dll 注入目标进程,我尝试调用导出的函数,我想接收我的调用 GetProcAddress 的地址,如下所示:

FARPROC funcAddr =
GetProcAddress(GetModuleHandle("target.dll"), "exportedFunc")

调用成功,我检索地址,显然 GetLastError() 为 0。

但它只是地址的 16 字节十六进制表示形式(如"0xAB4285B9"),但我需要它进行 32 字节十六进制表示,因为我缺少前 8 个字节(例如 7FF8,完整的地址将是"0x7FF8AB4285B9")

这只是一个演示文稿/格式问题,还是我需要调用另一个函数才能获得我想要的东西?

我显示如下信息:

WCHAR buffer[256];
swprintf_s(buffer, 32, L"%X", funcAddr);
MessageBox(NULL, buffer, L"Address", MB_OK);

我感谢任何帮助。

很抱歉非代码格式,我在这里使用手机的网络浏览器。

格莱兹

好吧,

因为我对这个主题进行了更深入的阅读,所以我理解并更改了我的解决方案以使其正常工作(特别感谢 @cheers 和 hth):

WCHAR buffer[256];
swprintf_s(buffer, 32, L"%p", funcAddr);
MessageBox(NULL, buffer, L"Address", MB_OK);

只需将"%X"的格式更改为表示指针地址表示形式的"%p"。就这么简单。