fork download
  1. #include <Windows.h>
  2.  
  3. #pragma comment(linker, "/SECTION:.text,RWE")
  4.  
  5. #define FILENAME "main.exe"
  6.  
  7.  
  8. PDWORD FindMarker(void *addr, DWORD dwMarker)
  9. {
  10. PBYTE ptr = (PBYTE)addr;
  11. while ((*(DWORD *)ptr) != dwMarker)
  12. ptr++;
  13. return (PDWORD)ptr;
  14. }
  15.  
  16. int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPSTR lpCmdLine, int nCmdShow)
  17. {
  18. PDWORD StartMarker = 0, EndMarker = 0;
  19. HANDLE hFile = NULL;
  20. HANDLE hFileMapping = NULL;
  21. LPVOID lpMapView = NULL;
  22. BYTE dwMarkerDistance = 0;
  23.  
  24. PDWORD (* volatile find)(void *, DWORD) = FindMarker;
  25.  
  26. hFile = CreateFile(TEXT(FILENAME),
  27. GENERIC_READ | GENERIC_WRITE,
  28. FILE_SHARE_READ,
  29. NULL,
  30. OPEN_EXISTING,
  31. 0,
  32. NULL);
  33. hFileMapping = CreateFileMapping(hFile,
  34. NULL,
  35. PAGE_READWRITE,
  36. 0,
  37. 0,
  38. NULL);
  39. lpMapView = MapViewOfFile(hFileMapping,
  40. FILE_MAP_READ | FILE_MAP_WRITE,
  41. 0,
  42. 0,
  43. 0);
  44.  
  45. StartMarker = find(lpMapView, 0x90909090);
  46. EndMarker = find(StartMarker + 1, 0x90909090);
  47. dwMarkerDistance = EndMarker - StartMarker;
  48.  
  49. TCHAR buffer[127];
  50. wsprintf(buffer, TEXT("%x, %x, %x"), StartMarker, EndMarker, (EndMarker - StartMarker) * sizeof(DWORD));
  51. MessageBox(NULL, buffer, NULL, MB_OK);
  52.  
  53. *((PBYTE)StartMarker - 1) = dwMarkerDistance * sizeof(DWORD) + 4;
  54.  
  55. StartMarker++;
  56. while (StartMarker < EndMarker)
  57. {
  58. *StartMarker ^= 0xDEADCAFE;
  59. StartMarker++;
  60. }
  61.  
  62. UnmapViewOfFile(lpMapView);
  63. CloseHandle(hFileMapping);
  64. CloseHandle(hFile);
  65. }
Compilation error #stdin compilation error #stdout 0s 0KB
stdin
Standard input is empty
compilation info
prog.cpp:1:21: fatal error: Windows.h: No such file or directory
compilation terminated.
stdout
Standard output is empty