2

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

我在 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);

我很感激任何帮助。

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

格雷茨

4

1 回答 1

0

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

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

通过简单地将“%X”的格式更改为代表指针地址表示的“%p”。就那么简单。

于 2016-06-07T16:04:38.947 回答