0561ネトゲ廃人@名無し
2019/10/14(月) 01:18:48.77ID:???アラインメントを全く気にしてないけど取り敢えず動いた。
BYTE jump[14] = {
0x68,0x90,0x90,0x90,0x90, // push <自作関数のアドレス下位4バイト>
0xc7,0x44, 0x24, 0x04, 0x90, 0x90, 0x90, 0x90, //mov DWORD PTR [rsp+0x4],<自作関数のアドレス上位4バイト>
0xc3}; //ret
FARPROC pTargetFunctionAddr = GetProcAddress(hModule, "MessageBoxA");
FARPROC pMyFunctionAddr = (FARPROC)&MyMessageBoxA;
memcpy(&jump[1], ((char*)&pMyFunctionAddr), 4);
memcpy(&jump[9], ((char*)&pMyFunctionAddr)+4, 4);
//MessageBoxAの先頭コードをjumpコードに書き換え
DWORD OriginalProtection;
VirtualProtect(pTargetFunctionAddr, 14, PAGE_EXECUTE_READWRITE, &OriginalProtection);
memcpy(pTargetFunctionAddr, jump, 14)
MessageBoxA(0, 0, 0, 0);
}