- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
#define MAKEPTR(p,o) (LPVOID) ( (DWORD)p + (DWORD)o )
#define WRITE_OPCODE(pCode, x) \
res = WriteProcessMemory( hProcess, pCode, &x, sizeof(x), &nWritten ); \
if( !res ) return FALSE; \
pCode = MAKEPTR(pCode,sizeof(x))
#define WRITE_DWORD(pCode, x) \
res = WriteProcessMemory( hProcess, pCode, &x, sizeof(x), &nWritten ); \
if( !res ) return FALSE; \
pCode = MAKEPTR(pCode,sizeof(x))
BOOL WriteSequence(DWORD dwOffset)
{
WRITE_OPCODE(dwOffset, 0x69);
WRITE_DWORD(dwOffset, 0x80000001);
WRITE_OPCODE(dwOffset, 0xС0);
WRITE_OPCODE(dwOffset, 0x63);
WRITE_DWORD(dwOffset, 0xFFFFFFFF);
WRITE_OPCODE(dwOffset, 0x63);
WRITE_DWORD(dwOffset, 0xFFFFFFFF);
return TRUE;
}
Но это явно не тот случай.
а WRITE_OPCODE, WRITE_DWORD сделать функциями с longjmp и имхо глядя
на эту функцию все очень прозрачно в отличии от условия спрятанного в макрос
кг / ам, вообщем.