0

メッセージボックスを表示するように calc.exe を実行しようとしていますが、プログラムを実行するとすぐに calc.exe が常にクラッシュします。そこで、デバッグ メッセージを表示するために、自分のプロセスにコードを挿入しようとしました。そうすることで、「アクセス違反...実行できません...」という例外が表示されpData->msgます。その後、私はそれを知り、同じアドレスpThreadを取得しました。pDataこれはどのように可能ですか?私は実際lpAddressVirtualAllocExtopPagepPage + 128to を設定して、同じ開始アドレスを取得しませんでした。

// 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);
4

1 に答える 1