Advertisement
Guest User

[External Base] CProcess.h (by Excidium)

a guest
Jan 9th, 2013
318
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.42 KB | None | 0 0
  1. #include <TlHelp32.h>
  2.  
  3. class CProcess
  4. {
  5. public:
  6.  
  7. PROCESSENTRY32 pGame;
  8. HANDLE hProcess;
  9.  
  10. DWORD dwClient;
  11. DWORD dwEngine;
  12. DWORD dwServer;
  13. DWORD dwOverlay;
  14. DWORD dwVGui;
  15. DWORD dwLibCef;
  16. DWORD dwSteam;
  17. HWND hwnd_Css;
  18.  
  19.  
  20.     DWORD FindProcess(const char *ccName, PROCESSENTRY32 *pEntry)
  21.     {    
  22.     PROCESSENTRY32 pEntry32;
  23.     pEntry32.dwSize = sizeof(PROCESSENTRY32);
  24.  
  25.     HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
  26.     if (hSnapshot == INVALID_HANDLE_VALUE) return 0;
  27.  
  28.         if (!Process32First(hSnapshot, &pEntry32))
  29.         {
  30.         CloseHandle(hSnapshot);
  31.         return 0;
  32.         }
  33.         do
  34.         {
  35.             if (!_strcmpi(pEntry32.szExeFile, ccName))
  36.             {
  37.             memcpy((void *)pEntry, (void *)&pEntry32, sizeof(PROCESSENTRY32));
  38.             CloseHandle(hSnapshot);
  39.             return pEntry32.th32ProcessID;
  40.             }
  41.         }
  42.     while (Process32Next(hSnapshot, &pEntry32));
  43.     CloseHandle(hSnapshot);
  44.  
  45.     return 0;
  46.     }
  47.    
  48.     DWORD FindThread(DWORD dwProcess)
  49.     {    
  50.     THREADENTRY32 tEntry32;
  51.     tEntry32.dwSize = sizeof(THREADENTRY32);
  52.  
  53.     HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD, 0);
  54.     if (hSnapshot == INVALID_HANDLE_VALUE) return 0;
  55.  
  56.         if (!Thread32First(hSnapshot, &tEntry32))
  57.         {
  58.         CloseHandle(hSnapshot);
  59.         return 0;
  60.         }
  61.         do
  62.         {
  63.             if (tEntry32.th32OwnerProcessID == dwProcess)
  64.             {
  65.             CloseHandle(hSnapshot);
  66.             return tEntry32.th32ThreadID;
  67.             }
  68.         }
  69.     while (Thread32Next(hSnapshot, &tEntry32));
  70.     CloseHandle(hSnapshot);
  71.    
  72.     return 0;
  73. }
  74.  
  75.     DWORD GetModuleBase(LPSTR lpModuleName, DWORD dwProcessId)
  76.     {
  77.     MODULEENTRY32 lpModuleEntry = {0};
  78.     HANDLE hSnapShot = CreateToolhelp32Snapshot( TH32CS_SNAPMODULE, dwProcessId);
  79.     if(!hSnapShot)  return NULL;
  80.     lpModuleEntry.dwSize = sizeof(lpModuleEntry);
  81.     BOOL bModule = Module32First( hSnapShot, &lpModuleEntry );
  82.         while(bModule)
  83.         {
  84.             if(!strcmp(lpModuleEntry.szModule, lpModuleName ) )
  85.             {
  86.             CloseHandle( hSnapShot );
  87.             return (DWORD)lpModuleEntry.modBaseAddr;
  88.             }
  89.        
  90.         bModule = Module32Next( hSnapShot, &lpModuleEntry );
  91.         }
  92.    
  93.     CloseHandle( hSnapShot );
  94.     return NULL;
  95. }
  96.  
  97.     void SetDebugPrivilege()
  98.     {
  99.     HANDLE hProcess=GetCurrentProcess(), hToken;
  100.     TOKEN_PRIVILEGES priv;
  101.     LUID luid;
  102.  
  103.     OpenProcessToken(hProcess, TOKEN_ADJUST_PRIVILEGES, &hToken);
  104.     LookupPrivilegeValue(0, "seDebugPrivilege", &luid);
  105.     priv.PrivilegeCount = 1;
  106.     priv.Privileges[0].Luid = luid;
  107.     priv.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
  108.     AdjustTokenPrivileges(hToken, false, &priv, 0, 0, 0);
  109.     CloseHandle(hToken);
  110.     CloseHandle(hProcess);
  111.     }
  112.  
  113.     void Initialize()
  114.     {
  115.  
  116.     SetDebugPrivilege();
  117.     while (!FindProcess("hl2.exe", &pGame)) Sleep(10);
  118.     while (!(FindThread(pGame.th32ProcessID))) Sleep(10);
  119.     hProcess = OpenProcess(PROCESS_ALL_ACCESS, false, pGame.th32ProcessID);
  120.  
  121.     while (dwClient == 0x0) dwClient = GetModuleBase("client.dll", pGame.th32ProcessID);
  122.     while (dwEngine == 0x0) dwEngine = GetModuleBase("engine.dll", pGame.th32ProcessID);
  123.     while (dwServer == 0x0) dwServer = GetModuleBase("server.dll", pGame.th32ProcessID);
  124.     while (dwOverlay == 0x0) dwOverlay = GetModuleBase("GameOverlayRenderer.dll", pGame.th32ProcessID);
  125.     while (dwVGui == 0x0) dwVGui = GetModuleBase("vguimatsurface.dll", pGame.th32ProcessID);
  126.     while (dwLibCef == 0x0) dwLibCef = GetModuleBase("libcef.dll", pGame.th32ProcessID);
  127.     while (dwSteam == 0x0) dwSteam = GetModuleBase("steam.dll", pGame.th32ProcessID);
  128.  
  129.     hwnd_Css = FindWindow(NULL, "Counter-Strike Source");
  130.     }
  131.  
  132. };
  133.  
  134. extern CProcess gProcess;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement