0

所以我试图用 FARPROC 的内存地址弹出一个 MessageBox,这样我就可以看到这个值。不过我好像做不到。我也尝试过一些古怪的东西。

这是我上次尝试的无效示例。

MessageBox(NULL, (LPCSTR) (WCHAR) myFarproc, "Loader", NULL);

它只是使程序崩溃,并且

MessageBox(NULL, (LPCSTR) myFarproc, "Loader", NULL);

显示乱码。还要注意的是,调用这个 dll 代码的程序是用 C# 编写的。

4

2 回答 2

1

您不能只将指针转换为字符串并期望某些内容清晰,特别是如果您将随机指针转换为指向 C 样式字符串的指针(这就是 LPCSTR)。

您需要做的是使用类似的东西将指针的数值转换为字符串sprintf_s并显示结果字符串。

例如(从记忆中,没有编译它):

char buffer[9];   // Adjust size if you're on a 64-bit system
sprintf_s(buffer, "%x", (size_t)myFarProc);

这是假设您可以使用 sprintf_s 的 C++ 版本。

于 2013-03-07T01:53:43.317 回答
0

我想我做到了。我这样做正确吗?

size_t pAddy = (size_t) myFarproc;
stringstream ss;
char buff[10];
ss << itoa(pAddy,buff,16);
MessageBox(NULL, (LPCSTR) ss.str().c_str(), "Address", NULL);
于 2013-03-07T02:11:21.440 回答