server crash. What's the problem?
PHP Code:
bool createPatch()
{
short pattern[] = {-1,-1,-1,0x0F,0x84,0xC6,0x06,0x00,0x00,0x39,0x5D,0x74,0x0F,0x85,0xBD,0x06,0x00,0x00,0x8A,0x45,0x7E,0x84,0xC0,0x74,0x38,0x68,0xB4,0xFD,-1,-1,0x53,0xE8};
int pLength = sizeof(pattern)/sizeof(short);
bool findet = false;
HMODULE module;
if(GetModuleHandleEx(0,(LPCSTR)"mp.dll",&module))
{
HANDLE process = GetCurrentProcess();
_MODULEINFO moduleInfo;
if(GetModuleInformation(process,module,&moduleInfo,sizeof moduleInfo))
{
CloseHandle(process);
unsigned char * baseAdress = (unsigned char *) moduleInfo.lpBaseOfDll;
DWORD length = moduleInfo.SizeOfImage;
for(unsigned int i=0; i <= length - pLength ;i++)
{
if (comparePattern(pattern, baseAdress + i, pLength))
{
findet = true;
pathAddr = baseAdress + i;
}
}
}
}
else
{
SERVER_PRINT("Error locate module mp.dll");
return false;
}
if (!findet)
{
SERVER_PRINT("Cant find patch!");
return false;
}
p = (void (*)(int *))pathAddr;
unsigned char NopBytes[3] = {0x90, 0x90, 0x90};
memcpy((void *)originalBytes, NopBytes, sizeof( NopBytes) );
/*pathedBytes[0] = 0xE9;
*((long*)(&pathedBytes[1])) = (char*)checkExploit - (char*)pathAddr - 5;*/
DWORD oldProtection;
if(VirtualProtect(pathAddr, 5, PAGE_EXECUTE_READWRITE, &oldProtection))
return true;
return false;
}
__________________