メッセージボックスを表示するように calc.exe を実行しようとしていますが、プログラムを実行するとすぐに calc.exe が常にクラッシュします。そこで、デバッグ メッセージを表示するために、自分のプロセスにコードを挿入しようとしました。そうすることで、「アクセス違反...実行できません...」という例外が表示されpData->msg
ます。その後、私はそれを知り、同じアドレスpThread
を取得しました。pData
これはどのように可能ですか?私は実際lpAddress
にVirtualAllocEx
topPage
とpPage + 128
to を設定して、同じ開始アドレスを取得しませんでした。
// Allocate page
void *pPage = VirtualAllocEx(hProcess, NULL, 256, MEM_RESERVE, PAGE_EXECUTE_READWRITE);
// Commit memory for thread procedure
void *pThread = VirtualAllocEx(hProcess, pPage, 128, MEM_COMMIT, PAGE_EXECUTE_READWRITE);
// Commit memory for thread data
void *pData = VirtualAllocEx(hProcess, (void*)((long long)pPage + 128), 128, MEM_COMMIT, PAGE_EXECUTE_READWRITE);
// WriteProcessMemory, do stuff
// Release memory
VirtualFreeEx(hProcess, pPage, 256, MEM_RELEASE);