#include <Windows.h>
#pragma comment(linker, "/SECTION:.text,RWE")
void show(void)
{
__asm
{
nop
nop
nop
nop
}
MessageBox(NULL, TEXT("OLOLO"), TEXT("KEK"), MB_OK);
__asm
{
nop
nop
nop
nop
}
}
PDWORD FindMarker(void *addr)
{
PDWORD ptr = (PDWORD)addr;
while (*ptr != 0x90909090)
ptr += 1;
return ptr;
}
int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPSTR lpCmdLine, int nCmdShow)
{
PDWORD StartMarker = 0, EndMarker = 0;
show();
PDWORD(* volatile f)(void *) = FindMarker;
StartMarker = f(show);
EndMarker = f(StartMarker + 1);
TCHAR buffer[127];
wsprintf(buffer, TEXT("%x, %x"), StartMarker, EndMarker);
MessageBox(NULL, buffer, NULL, MB_OK);
while (StartMarker != EndMarker)
{
*StartMarker ^= 0xDEADCAFE;
StartMarker += 1;
}
}
I2luY2x1ZGUgPFdpbmRvd3MuaD4KCiNwcmFnbWEgY29tbWVudChsaW5rZXIsICIvU0VDVElPTjoudGV4dCxSV0UiKQoKdm9pZCBzaG93KHZvaWQpCnsKCV9fYXNtCgl7CgkJbm9wCgkJbm9wCgkJbm9wCgkJbm9wCgl9CglNZXNzYWdlQm94KE5VTEwsIFRFWFQoIk9MT0xPIiksIFRFWFQoIktFSyIpLCBNQl9PSyk7CglfX2FzbQoJewoJCW5vcAoJCW5vcAoJCW5vcAoJCW5vcAoJfQp9CgpQRFdPUkQgRmluZE1hcmtlcih2b2lkICphZGRyKQp7CglQRFdPUkQgcHRyID0gKFBEV09SRClhZGRyOwoJd2hpbGUgKCpwdHIgIT0gMHg5MDkwOTA5MCkKCQlwdHIgKz0gMTsKCXJldHVybiBwdHI7Cn0KCmludCBXSU5BUEkgV2luTWFpbihISU5TVEFOQ0UgaEluc3QsIEhJTlNUQU5DRSBoUHJldkluc3QsIExQU1RSIGxwQ21kTGluZSwgaW50IG5DbWRTaG93KQp7CglQRFdPUkQgU3RhcnRNYXJrZXIgPSAwLCBFbmRNYXJrZXIgPSAwOwoKCXNob3coKTsKCglQRFdPUkQoKiB2b2xhdGlsZSBmKSh2b2lkICopID0gRmluZE1hcmtlcjsKCVN0YXJ0TWFya2VyID0gZihzaG93KTsKCUVuZE1hcmtlciA9IGYoU3RhcnRNYXJrZXIgKyAxKTsKCglUQ0hBUiBidWZmZXJbMTI3XTsKCXdzcHJpbnRmKGJ1ZmZlciwgVEVYVCgiJXgsICV4IiksIFN0YXJ0TWFya2VyLCBFbmRNYXJrZXIpOwoJTWVzc2FnZUJveChOVUxMLCBidWZmZXIsIE5VTEwsIE1CX09LKTsKCgl3aGlsZSAoU3RhcnRNYXJrZXIgIT0gRW5kTWFya2VyKQoJewoJCSpTdGFydE1hcmtlciBePSAweERFQURDQUZFOwoJCVN0YXJ0TWFya2VyICs9IDE7Cgl9Cn0=