Код (Text): struct far_jmp { BYTE PuhsOp; PVOID PushArg; BYTE RetOp; }; JmpZwq.PuhsOp = 0x68; //push JmpZwq.PushArg = (PROC)&MessageBoxA_; JmpZwq.RetOp = 0xC3; //ret WriteProcessMemory(INVALID_HANDLE_VALUE, PtrZwq, &JmpZwq, sizeof(far_jmp),&dwBytes); То есть как Вы уже догадались пишу push псевдо адресс мессджбокса ret Но после WriteProcessMemory, в памяти оказываеться не то что надо(естесно прога падает).
Код (Text): #pragma pack(push, 1) struct far_jmp { BYTE PuhsOp; PVOID PushArg; BYTE RetOp; }; #pragma pack(pop) ------ а что там оказывается? Дамп памяти покажи.
SPA Поля в структуре обычно выравниваются по границе sizeof(поле). То есть твоя структур преобразиться в Код (Text): struct far_jmp { BYTE PuhsOp; BYTE Padding1[3]; PVOID PushArg; BYTE RetOp; }; #pragma pack(push, 1) - говорит, что надо выравнивать по границе в 1 байт. #pragma pack(pop) - возвращает всё на свои места.