Advertisement
Guest User

Untitled

a guest
Jun 10th, 2023
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ (WinAPI) 1.57 KB | Source Code | 0 0
  1. #include <windows.h>
  2. #include <winternl.h>
  3. #include <array>
  4. #include <iostream>
  5.  
  6. BOOL APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved)
  7. {
  8.     switch (ul_reason_for_call)
  9.     {
  10.     case DLL_PROCESS_ATTACH:
  11.         AllocConsole();
  12.  
  13.         std::array<unsigned char, 11> NtProtectVirtualMemoryBytes =
  14.         {
  15.             0x4C, 0x8B, 0xD1,               /*mov r10, rcx*/
  16.             0xB8, 0x50, 0x00, 0x00, 0x00,   /*mov eax, 0x50*/
  17.             0x0F, 0x05,                     /*syscall*/
  18.             0xC3                            /*ret*/
  19.         };
  20.  
  21.         auto* NtProtectVirtualMemoryStub{ VirtualAlloc(nullptr,
  22.             NtProtectVirtualMemoryBytes.size(),
  23.             MEM_RESERVE | MEM_COMMIT, PAGE_EXECUTE_READWRITE) };
  24.  
  25.         memcpy(NtProtectVirtualMemoryStub, NtProtectVirtualMemoryBytes.data(),
  26.             NtProtectVirtualMemoryBytes.size());
  27.  
  28.         using NtProtectVirtualMemoryFnc = NTSTATUS(NTAPI*)(HANDLE, PVOID*, SIZE_T*, ULONG, PULONG);
  29.         auto NtProtectVirtualMemory{
  30.             reinterpret_cast<NtProtectVirtualMemoryFnc>(NtProtectVirtualMemoryStub) };
  31.  
  32.         static void* NtOpenProcessAddress{ GetProcAddress(GetModuleHandleA("ntdll.dll"), "ZwOpenProcess") };
  33.  
  34.         DWORD oldPermissions{};
  35.         SIZE_T allocSize = 4096;
  36.         auto result{ NtProtectVirtualMemory(GetCurrentProcess(), &NtOpenProcessAddress, &allocSize,
  37.             PAGE_WRITECOPY | PAGE_GUARD, &oldPermissions) };
  38.  
  39.         printf("NtProtectVirtualMemory NTSTATUS: %016I64x\n", result);
  40.  
  41.         return TRUE;
  42.     }
  43.  
  44.     return TRUE;
  45. }
Tags: C++
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement