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 に答える