All pastes #49677 Raw Edit

Untitled

public text v1 · immutable
#49677 ·published 2006-04-18 00:24 UTC
rendered paste body
#include <windows.h>
#include <psapi.h>


//Maximum processes
#define PROCMAXCOUNT 4096

int main()
{
    int aa,bb,mode=0;
    int IsStarCraft;  // Used to check if a process is StarCraft
    int AddrCount; // Used to iterate through the 11 memory addresses
    DWORD pIDs[PROCMAXCOUNT],pIDssz,pIDscount,Modssz,Modscount;
    HANDLE proch;
    HMODULE Mods[4096];
    unsigned char mbasename[MAX_PATH];
    MODULEINFO minfo;
    char ProcessName[] = "StarCraft.exe";  // Process Name
    int disp = 0;
    BYTE ChatBuffer[11][255];
    int SCProcID; // StarCraft Process ID
    
    HANDLE hProcess;
    BYTE bBuffer[78];
    DWORD dwBaseAddress[] = {0x00665852, 0x00664FCE, 0x006650A8, 0x00665182, 0x0066525C, 0x00665336, 0x00665410, 0x006654EA, 0x006655C4, 0x0066569E, 0x00665778};
    DWORD lSize = 78;
    DWORD lRead = 0; 
  
    // Enumerate processes
    if (EnumProcesses(pIDs,sizeof(pIDs),&pIDssz)==FALSE)
    {
        printf("Error getting process list.\n");
        return 1;
    }

    // Show processes info
    pIDscount=pIDssz/sizeof(DWORD);
    for (aa=0;aa<pIDscount;aa++)
    {

        // Open process
        if (!(proch=OpenProcess(PROCESS_QUERY_INFORMATION|PROCESS_VM_READ,FALSE,pIDs[aa])))
           { continue; }
            
        // Enumerate modules 
        if (!EnumProcessModules(proch,Mods,sizeof(HMODULE)*4096,&Modssz)) 
           { continue; }
        Modscount=Modssz/sizeof(DWORD);
            
        // First module representes own process
        if (!mode) { Modscount=1; }
        
        for (bb=0;bb<Modscount;bb++) 
        {
            GetModuleBaseName(proch,Mods[bb],mbasename,MAX_PATH/sizeof(unsigned char));           
            //Compares process name and "StarCraft.exe"
            if ((strcmpi(ProcessName,mbasename)) == 0)
            {
                IsStarCraft = 1; 
                SCProcID = pIDs[aa];
            }           
        }
        
     }
     
     while (IsStarCraft == 1)  // Checks if process name is StarCraft.exe
     {
           //printf("Process ID: %i\n",SCProcID);
                  
                 for(AddrCount=0;AddrCount<10;AddrCount++)
                 {
                     hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, SCProcID);
                     if (hProcess == NULL)
                     {
                           printf("Error opening process with OpenProcess()\n");
                           IsStarCraft = 0;
                     }
                     
                     if (ReadProcessMemory(hProcess, (void*)dwBaseAddress[AddrCount], (char *)bBuffer, lSize, &lRead))
                     {               
                           CloseHandle(hProcess);
                           memset(bBuffer, '\0', sizeof(bBuffer));
                           if ((strcmpi(ChatBuffer[AddrCount], bBuffer)) != 0)
                           {
                           strcpy(ChatBuffer[AddrCount], bBuffer);
                           printf("0x%i: %s\n",dwBaseAddress[AddrCount], ChatBuffer[AddrCount]);
                           }
           
                     }
                     else { printf("ReadProcessMemory failed.\n"); }
                     
                  }
                  
     } // End of IsStarCraft         
     
     system("PAUSE");
     return 0;
}