C++ GetProcAddress 64 位 returns 32 位地址
C++ GetProcAddress 64bit returns 32bit address
我已经搜索了一段时间,但没有找到以下问题的合适答案:
我正在将一个 dll 注入到目标进程中,同时在 dll 内部,我尝试调用一个导出函数,我想要接收调用 GetProcAddress 的地址如下:
FARPROC funcAddr =
GetProcAddress(GetModuleHandle("target.dll"), "exportedFunc")
调用成功,我检索到地址,显然 GetLastError() 为 0。
但它只是地址的 16 字节十六进制表示(如“0xAB4285B9”),但我需要它来表示 32 字节的十六进制表示,因为我缺少前 8 个字节(例如 7FF8,完整地址然后将是“0x7FF8AB4285B9”)
这只是一个 presentation/format 问题还是我需要调用另一个函数才能得到我想要的?
我显示如下信息:
WCHAR buffer[256];
swprintf_s(buffer, 32, L"%X", funcAddr);
MessageBox(NULL, buffer, L"Address", MB_OK);
感谢任何帮助。
对于非代码格式,我很抱歉,我在这里使用我的 phone 网络浏览器。
问候
好吧,因为我更深入地阅读了我理解的主题并更改了我的解决方案以使其正常工作(特别感谢@cheers 和 hth):
WCHAR buffer[256];
swprintf_s(buffer, 32, L"%p", funcAddr);
MessageBox(NULL, buffer, L"Address", MB_OK);
只需将“%X”的格式更改为表示指针地址表示形式的“%p”即可。
就这么简单。
我已经搜索了一段时间,但没有找到以下问题的合适答案:
我正在将一个 dll 注入到目标进程中,同时在 dll 内部,我尝试调用一个导出函数,我想要接收调用 GetProcAddress 的地址如下:
FARPROC funcAddr =
GetProcAddress(GetModuleHandle("target.dll"), "exportedFunc")
调用成功,我检索到地址,显然 GetLastError() 为 0。
但它只是地址的 16 字节十六进制表示(如“0xAB4285B9”),但我需要它来表示 32 字节的十六进制表示,因为我缺少前 8 个字节(例如 7FF8,完整地址然后将是“0x7FF8AB4285B9”)
这只是一个 presentation/format 问题还是我需要调用另一个函数才能得到我想要的?
我显示如下信息:
WCHAR buffer[256];
swprintf_s(buffer, 32, L"%X", funcAddr);
MessageBox(NULL, buffer, L"Address", MB_OK);
感谢任何帮助。
对于非代码格式,我很抱歉,我在这里使用我的 phone 网络浏览器。
问候
好吧,因为我更深入地阅读了我理解的主题并更改了我的解决方案以使其正常工作(特别感谢@cheers 和 hth):
WCHAR buffer[256];
swprintf_s(buffer, 32, L"%p", funcAddr);
MessageBox(NULL, buffer, L"Address", MB_OK);
只需将“%X”的格式更改为表示指针地址表示形式的“%p”即可。 就这么简单。