所以我试图用一个FARPROC的内存地址弹出一个MessageBox,这样我就能看到它的值。我似乎无法做到这一点。我也尝试过一些古怪的东西。
这是我上次尝试过的不切实际的例子。
MessageBox(NULL, (LPCSTR) (WCHAR) myFarproc, "Loader", NULL);
它只是崩溃程序,
MessageBox(NULL, (LPCSTR) myFarproc, "Loader", NULL);
显示胡言乱语。另外值得注意的是,调用此dll代码的程序在C#中。
答案 0 :(得分: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 ++版本。
答案 1 :(得分: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);