Facebook
From bober, 3 Years ago, written in Plain Text.
Embed
Download Paste or View Raw
Hits: 101
  1. #ifndef PROCMEM_H
  2. #define PROCMEM_H
  3.  
  4. #define WIN32_LEAN_AND_MEAN
  5.  
  6. #include <windows.h>
  7. #include <iostream>
  8. #include <TlHelp32.h>
  9. #include <string>
  10. #include <sstream>
  11. #include <process.h>
  12.  
  13.  
  14.  
  15. class ProcMem
  16.  {
  17. protected:
  18.         HANDLE hProcess;
  19.         DWORD dwPID, dwProtection, dwCaveAddress;
  20.         BOOL bPOn, bIOn, bProt;
  21.  
  22. public:
  23.  
  24.         ProcMem();
  25.         ~ProcMem();
  26.         void RadarHack();
  27.         int chSizeOfArray(char* chArray);
  28.         int iSizeOfArray(char* iArray);
  29.         bool iFind(int* iAry, int iVal);
  30.  
  31. #pragma region MEMORY FUNCTIONS
  32.         template <class cData>
  33.         void Protection(DWORD dwAddress)
  34.         {
  35.                 if (!bProt)
  36.                         VirtualProtectEx(hProcess, (LPVOID)dwAddress, sizeof(cData), PAGE_EXECUTE_READWRITE, &dwProtection);
  37.                 else
  38.                         VirtualProtectEx(hProcess, (LPVOID)dwAddress, sizeof(cData), dwProtection, &dwProtection);
  39.  
  40.                 bProt = !bProt;
  41.         }
  42.  
  43.         template <class cData>
  44.         cData Read(DWORD dwAddress)
  45.         {
  46.                 cData cRead;
  47.                 ReadProcessMemory(hProcess, (LPVOID)dwAddress, &cRead, sizeof(cData), NULL);
  48.                 return cRead;
  49.         }
  50.  
  51.         template <class cData>
  52.         cData Read(DWORD dwAddress, char* Offset, BOOL Type)
  53.         {
  54.                 int iSize = iSizeOfArray(Offset) - 1;
  55.                 dwAddress = Read<DWORD>(dwAddress);
  56.  
  57.                 //Store Hex values
  58.                 for (int i = 0; i < iSize; i++)
  59.                         dwAddress = Read<DWORD>(dwAddress + Offset[i]);
  60.  
  61.                 if (!Type)
  62.                         return dwAddress + Offset[iSize];
  63.                 else
  64.                         return Read<cData>(dwAddress + Offset[iSize]);
  65.         }
  66.  
  67.         template <class cData>
  68.         void Write(DWORD dwAddress, cData Value)
  69.         {
  70.                 WriteProcessMemory(hProcess, (LPVOID)dwAddress, &Value, sizeof(cData), NULL);
  71.         }
  72.  
  73.         template <class cData>
  74.         void Write(DWORD dwAddress, char* Offset, cData Value)
  75.         {
  76.                 Write<cData>(Read<cData>(dwAddress, Offset, false), Value);
  77.         }
  78.  
  79.         virtual void Process(char* ProcessName);
  80.         virtual void Patch(DWORD dwAddress, char* chPatch_Bts, char* chDefault_Bts);
  81.         virtual void Inject(DWORD dwAddress, char* chInj_Bts, char* chDef_Bts, BOOL Type);
  82.         virtual DWORD AOB_Scan(DWORD dwAddress, DWORD dwEnd, char* chPattern);
  83.         virtual DWORD Module(LPSTR ModuleName);
  84.  
  85. #pragma endregion      
  86.  
  87. };
  88. #endif