Advertisement
Guest User

Untitled

a guest
Aug 22nd, 2016
141
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.45 KB | None | 0 0
  1.  
  2. #include <iostream>
  3. #include <Windows.h>
  4. #include <string>
  5. #include <ctime>
  6. #include <tlhelp32.h>
  7. #include <tchar.h>
  8.  
  9. void WriteToMemory(HANDLE hProcHandle);
  10. DWORD FindDmaAddy(int PointerLevel, HANDLE hProcHandle, DWORD Offsets[], DWORD BaseAddress);
  11. DWORD_PTR dwGetModuleBaseAddress(DWORD dwProcID, TCHAR *szModuleName);
  12.  
  13. std::string GameName = "Sta";
  14. LPCSTR LGameWindow = "Sta (64-bit, PCD3D_SM5)";
  15. std::string GameStatus;
  16.  
  17.  
  18. bool IsGameAvail;
  19. bool UpdateOnNextRun;
  20. DWORD serverdllBaseAddress = 0;
  21.  
  22. bool FireStatus;
  23. BYTE FireValue[] = { 0x10,0x0,0x0,0x0 };
  24. DWORD FireBaseAddress = { 0x04BE6798 };
  25. DWORD FireOffsets[] = { 0x1B8, 0x20, 0x400, 0x78, 0x3BC };
  26.  
  27.  
  28. int main()
  29. {
  30.    
  31.     HWND hGameWindow = NULL;
  32.     int timeSinceLastUpdate = clock();
  33.     int GameAvailTMR = clock();
  34.     int OnePressTMR;
  35.     HWND WindowHandel = FindWindowA(0, "Sta (64-bit, PCD3D_SM5)");
  36.     DWORD dwProcId = NULL;
  37.    
  38.     HANDLE hProcHandle = NULL;
  39.     UpdateOnNextRun = true;
  40.     std::string sFireStatus;
  41.     sFireStatus = "OFF";
  42.     OnePressTMR = clock();
  43.     while (!GetAsyncKeyState(VK_INSERT))
  44.     {
  45.        
  46.         if (clock() - GameAvailTMR > 100)
  47.         {
  48.             GameAvailTMR = clock();
  49.             IsGameAvail = false;
  50.             hGameWindow = FindWindow(NULL, LGameWindow);
  51.             if (hGameWindow)
  52.             {
  53.                 GetWindowThreadProcessId(hGameWindow, &dwProcId);
  54.                 serverdllBaseAddress = dwGetModuleBaseAddress(dwProcId, _T("Sta.exe"));
  55.  
  56.                 FireBaseAddress = serverdllBaseAddress + FireBaseAddress;
  57.                 if (dwProcId != 0)
  58.                 {
  59.                     hProcHandle = OpenProcess(PROCESS_ALL_ACCESS, FALSE, dwProcId);
  60.                     if (hProcHandle == INVALID_HANDLE_VALUE || hProcHandle == NULL)
  61.                     {
  62.                         GameStatus = "Failed to open process for valid handle";
  63.                     }
  64.                     else
  65.                     {
  66.                         GameStatus = "Ready to hack";
  67.                         IsGameAvail = true;
  68.                     }
  69.                 }
  70.                 else GameStatus = "Failed to obtain process id";
  71.             }
  72.             else GameStatus = "game NOT FOUND";
  73.  
  74.             if (UpdateOnNextRun || clock() - timeSinceLastUpdate > 5000)
  75.             {
  76.                 system("cls");
  77.                 std::cout << "----------------------------------------------------" << std::endl;
  78.                 std::cout << "        memory hacker" << std::endl;
  79.                 std::cout << "----------------------------------------------------" << std::endl << std::endl;
  80.                 std::cout << "GAME STATUS:" << GameStatus << "   " << std::endl << std::endl;
  81.                 std::cout << "[F1] cheat -> " << sFireStatus << " <-" << std::endl << std::endl;
  82.                 std::cout << "[INSERT] Exit" << std::endl;
  83.                 std::cout << &FireBaseAddress;
  84.                
  85.                 UpdateOnNextRun = false;
  86.                 timeSinceLastUpdate = clock();
  87.             }
  88.  
  89.             if (IsGameAvail)
  90.             {
  91.                 WriteToMemory(hProcHandle);
  92.             }
  93.         }
  94.  
  95.         if (clock() - OnePressTMR > 400)
  96.         {
  97.             if (IsGameAvail)
  98.             {
  99.                 if (GetAsyncKeyState(VK_F1))
  100.                 {
  101.                     OnePressTMR = clock();
  102.                     FireStatus = !FireStatus;
  103.                     UpdateOnNextRun = true;
  104.                     if (FireStatus)sFireStatus = "ON";
  105.                     else sFireStatus = "OFF";
  106.                 }
  107.             }
  108.         }
  109.     }
  110.     CloseHandle(hProcHandle);
  111.     CloseHandle(hGameWindow);
  112.  
  113.     return ERROR_SUCCESS;
  114. }
  115. DWORD_PTR dwGetModuleBaseAddress(DWORD dwProcID, TCHAR *szModuleName)
  116. {
  117.     DWORD_PTR dwModuleBaseAddress = 0;
  118.     HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE | TH32CS_SNAPMODULE32, dwProcID);
  119.     if (hSnapshot != INVALID_HANDLE_VALUE)
  120.     {
  121.         MODULEENTRY32 ModuleEntry32;
  122.         ModuleEntry32.dwSize = sizeof(MODULEENTRY32);
  123.         if (Module32First(hSnapshot, &ModuleEntry32))
  124.         {
  125.             do
  126.             {
  127.                 if (_tcsicmp(ModuleEntry32.szModule, szModuleName) == 0)
  128.                 {
  129.                     dwModuleBaseAddress = (DWORD_PTR)ModuleEntry32.modBaseAddr;
  130.                     break;
  131.                 }
  132.             } while (Module32Next(hSnapshot, &ModuleEntry32));
  133.         }
  134.         CloseHandle(hSnapshot);
  135.     }
  136.     return dwModuleBaseAddress;
  137. }
  138. DWORD FindDmaAddy(int PointerLevel, HANDLE hProcHandle, DWORD Offsets[], DWORD BaseAddress){
  139.    
  140.     DWORD pointer = BaseAddress;            
  141.                                              
  142.     DWORD pTemp;
  143.  
  144.     DWORD pointerAddr;
  145.     for (int i = 0; i < PointerLevel; i++)
  146.     {
  147.         if (i == 0)
  148.         {
  149.             ReadProcessMemory(hProcHandle, (LPCVOID)pointer, &pTemp, 4, NULL);
  150.         }
  151.         pointerAddr = pTemp + Offsets[i];  
  152.         std::cout << &pointer << std::endl;
  153.         std::cout << &pointerAddr << std::endl;
  154.                                            
  155.         ReadProcessMemory(hProcHandle, (LPCVOID)pointerAddr, &pTemp, 4, NULL);
  156.        
  157.     }
  158.     return pointerAddr;
  159. }
  160.  
  161. void WriteToMemory(HANDLE hProcHandle)
  162. {
  163.     if (FireStatus)
  164.     {
  165.         DWORD AmmoAddressToWrite = FindDmaAddy(5 ,hProcHandle, FireOffsets, FireBaseAddress);
  166.         WriteProcessMemory(hProcHandle, (BYTE*)AmmoAddressToWrite, &FireValue, sizeof(FireValue), NULL);
  167.     }
  168. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement