Code:
HANDLE SystemProcessScan();
bool ScanProcessMemory(HANDLE hProcessHandle);
#define MAX_DUMP_SIZE 32
#define MAX_PROCESS_DUMP 1
typedef struct PROCESS_DUMP {
unsigned int m_aOffset;
unsigned char m_aMemDump[MAX_DUMP_SIZE];
} *PPROCESS_DUMP;
extern PROCESS_DUMP MEMORY_PROCESS_DUMP[MAX_PROCESS_DUMP];
PROCESS_DUMP MEMORY_PROCESS_DUMP[MAX_PROCESS_DUMP] = {
{0x417770, {0xE8, 0xC4, 0xAF, 0x00, 0x00, 0xE9, 0x79, 0xFE, 0xFF, 0xFF, 0x8B, 0xFF, 0x55, 0x8B, 0xEC, 0x8B, 0xC1, 0x8B, 0x4D, 0x08, 0xC7, 0x00, 0x88, 0xDA, 0x47, 0x00, 0x8B, 0x09, 0x83, 0x60, 0x08, 0x00}}
};
HANDLE SystemProcessScan(){ DWORD dwProcesses[MAX_PATH];
DWORD dwTotal;
HANDLE hProcessHandle;
if (!EnumProcesses(dwProcesses, sizeof(dwProcesses), &dwTotal))
return INVALID_HANDLE_VALUE;
for (int i = 0; i < (dwTotal / 4); i++){
hProcessHandle = OpenProcess(PROCESS_ALL_ACCESS, false, dwProcesses[i]);
if (hProcessHandle == INVALID_HANDLE_VALUE)
continue;
if(ScanProcessMemory(hProcessHandle))
return hProcessHandle;
CloseHandle(hProcessHandle);
}
return INVALID_HANDLE_VALUE;
}
bool ScanProcessMemory(HANDLE hProcessHandle) {
for(int i = 0; i < MAX_PROCESS_DUMP; i++){
char aTmpBuffer[MAX_DUMP_SIZE];
SIZE_T aBytesRead = 0;
ReadProcessMemory(hProcessHandle, (LPCVOID)MEMORY_PROCESS_DUMP[i].m_aOffset, (LPVOID)aTmpBuffer, sizeof(aTmpBuffer), &aBytesRead);
if(memcmp(aTmpBuffer, MEMORY_PROCESS_DUMP[i].m_aMemDump, MAX_DUMP_SIZE) == 0){
return true;
break;
}
}
return false;
}
call:
if(SystemProcessScan() != INVALID_HANDLE_VALUE)
ExitProcess(0); //hax autoit