我一直在寻找一段时间,并没有为以下问题找到合适的答案:
我在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);
我感谢任何帮助。
对于非代码格式,我很抱歉,我在这里使用手机的网络浏览器。
格尔茨
答案 0 :(得分:0)
好吧,因为我更深入地阅读了我理解的主题,并改变了我的解决方案,以使其正常工作(特别感谢@cheers和hth):
WCHAR buffer[256];
swprintf_s(buffer, 32, L"%p", funcAddr);
MessageBox(NULL, buffer, L"Address", MB_OK);
简单地将“%X”的格式改为“%p”,表示指针地址表示。 就这么简单。