Advertisement
ya_makaron

motya brat

May 23rd, 2019
180
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.68 KB | None | 0 0
  1. #define _SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS
  2.  
  3. #include <windows.h>
  4. #include <string>
  5. #include <assert.h>
  6. #include <process.h>
  7.  
  8. #include "SAMPFUNCS_API.h"
  9. #include "game_api\game_api.h"
  10.  
  11. SAMPFUNCS *SF = new SAMPFUNCS();
  12.  
  13. BOOL DataCompare(BYTE *data, BYTE *sign, char *mask)
  14. {
  15.     for (; *mask; mask++, sign++, data++) {
  16.         if (*mask == 'x' && *data != *sign) return FALSE;
  17.     }
  18.  
  19.     return (*mask) == NULL;
  20. }
  21.  
  22. DWORD ScanSignature(DWORD addr, DWORD size, BYTE *sign, char *mask)
  23. {
  24.     if (size == 0 || sign == nullptr || mask == nullptr) return 0;
  25.  
  26.     HANDLE hProc = GetCurrentProcess();
  27.     if (hProc)
  28.     {
  29.         MEMORY_BASIC_INFORMATION mbi = { 0 };
  30.         DWORD offset = 0;
  31.  
  32.         while (offset < size)
  33.         {
  34.             VirtualQueryEx(hProc, reinterpret_cast<LPCVOID>(addr + offset), &mbi, sizeof(MEMORY_BASIC_INFORMATION));
  35.             if (mbi.State != MEM_FREE)
  36.             {
  37.                 BYTE *buffer = new BYTE[mbi.RegionSize];
  38.                 ReadProcessMemory(hProc, mbi.BaseAddress, buffer, mbi.RegionSize, 0);
  39.                 for (SIZE_T i = 0; i < mbi.RegionSize; i++)
  40.                 {
  41.                     if (DataCompare(buffer + i, sign, mask))
  42.                     {
  43.                         CloseHandle(hProc);
  44.                         delete[] buffer;
  45.                         return reinterpret_cast<DWORD>(mbi.BaseAddress) + i;
  46.                     }
  47.                 }
  48.                 delete[] buffer;
  49.             }
  50.             offset += mbi.RegionSize;
  51.         }
  52.         CloseHandle(hProc);
  53.     }
  54.     return 0;
  55. }
  56.  
  57. void kill_fucking_raklogger(DWORD addr)
  58. {
  59.     DWORD old_prot;
  60.     VirtualProtect((void*)addr, 0x3, PAGE_EXECUTE_READWRITE, &old_prot);
  61.     *(byte*)addr = 0xC2;
  62.     *(byte*)(addr + 0x1) = 0x4;
  63.     *(byte*)(addr + 0x2) = 0x0;
  64.     VirtualProtect((void*)addr, 0x3, old_prot, &old_prot);
  65. }
  66.  
  67.  
  68. void CALLBACK mainloop()
  69. {
  70.     static bool init = false;
  71.     if (!init)
  72.     {
  73.         if (GAME == nullptr)
  74.             return;
  75.         if (GAME->GetSystemState() != eSystemState::GS_PLAYING_GAME)
  76.             return;
  77.         if (!SF->getSAMP()->IsInitialized())
  78.             return;
  79.        
  80.         DWORD addr = ScanSignature(0x400000, 0xFFFFFFFF,
  81.             (byte*)"\x8B\x4D\xF4\xB0\x01\x5F\x5E\x64\x89\x0D\x00\x00\x00\x00\x5B\x8D\x65\x68\x5D\xC2\x04\x00\x6A\x01\x6A\xFF\x6A\x01\x68\x00\x00\x00\x00\x8D\x4D\x18\xE8\x00\x00\x00\x00\x8B\xF0\x8B\x4D\x60\xC6\x45\xFC\x07\x8B\x11\xFF\x52\x04\x83\xEC\x18\x8B\xCC",
  82.             "xxxxxxxxxxxxxxxxxxxxxxxxxxxxx????xxxx????xxxxxxxxxxxxxxxxxxx") - 0x5527;
  83.  
  84.         SF->Log("0x%X", addr);
  85.  
  86.         if (addr)
  87.         {
  88.             kill_fucking_raklogger(addr + 0x5588); // incoming rpc
  89.             kill_fucking_raklogger(addr + 0x5918); // outcoming rpc
  90.             kill_fucking_raklogger(addr + 0x53D9); // incoming packet
  91.             kill_fucking_raklogger(addr + 0x572D); // outcoming packet
  92.         }
  93.         init = true;
  94.     }
  95. }
  96.  
  97. BOOL APIENTRY DllMain(HMODULE hModule, DWORD dwReasonForCall, LPVOID lpReserved)
  98. {
  99.     if (dwReasonForCall == DLL_PROCESS_ATTACH)
  100.         SF->initPlugin(mainloop, hModule);
  101.  
  102.     return TRUE;
  103. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement