C++ GetProcAddress 64 位返回 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")
这只是一个演示文稿/格式问题,还是我需要调用另一个函数才能获得我想要的东西?
我显示如下信息:
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"。就这么简单。
相关文章:
- 从 C++ 中的函数返回数组地址问题
- inet_ntop返回不存在的地址
- 为什么下面的代码段返回指针指向的值而不是指针的地址?
- 为什么使用存储在虚拟方法表中的地址调用虚拟函数的函数会返回垃圾?
- 为什么按值返回的对象与方法中的对象具有相同的地址?
- 返回数组中值的指针地址
- 创建一个函数来转换数组元素的类型并返回数组的地址
- 返回地址上的WriteProcessMemory
- 指针地址的内存偶尔更改了函数前和后返回
- libmysql:警告:返回局部变量"行"的地址(C++/C)
- 在字符串函数的指针中返回地址
- 在C++中为零大小的分配返回唯一地址背后的基本原理是什么?
- 重载新返回错误的地址
- 为什么 C++ 中的字符数组返回其项目而不是地址?
- 为什么 c_str() 在返回常量指针值时不输出地址
- 英特尔 Pin:如何获取系统调用的返回地址
- 按价值和地址返回
- ReadProcessMemory()为静态地址返回0
- 访问存储在指针变量所指向的地址中的值(这是一个地址)返回垃圾值
- 将地址返回给局部变量与返回指向局部变量的指针