x3
8th January 2008, 13:42
static bool NotPatched = true;
if (NotPatched)
{
int a,b,c;
for(a=0x01D10000;a<0x01D8FFFF;a++)
if(*(PBYTE)(a) == 0x68 && *(PBYTE)(a + 0x05) == 0xE8 && *(PBYTE)(a + 0x0A) == 0x6A && *(PBYTE)(a + 0x0B) == 0x07 && *(PBYTE)(a + 0x0C) == 0x68 && *(PBYTE)(a + 0x11) == 0xFF && *(PBYTE)(a + 0x12) == 0x15 && *(PBYTE)(a + 0x17) == 0x68)
{
pEngfuncs = (cl_enginefunc_t*)*(DWORD*)(a+0x0D);
ppmove = (playermove_s*)*(DWORD*)(a+0x18);
}
for(b=0x01D10000;b<0x01D8FFFF;b++)
if(*(PBYTE)(b) == 0x68 && *(PBYTE)(b + 0x05) == 0x68 && *(PBYTE)(b + 0x0A) == 0x6A && *(PBYTE)(b + 0x0B) == 0x01 && *(PBYTE)(b + 0x0C) == 0xFF && *(PBYTE)(b + 0x0D) == 0xD0 && *(PBYTE)(b + 0x0E) == 0x83 && *(PBYTE)(b + 0x27) == 0xC3)
{
pstudio = (engine_studio_api_s*)*(DWORD*)(b+0x01);
ppinterface = (r_studio_interface_s**)*(DWORD*)(b+0x06);
}
for(c=0x01D60000;c<0x01D8FFFF;c++)
if(*(PBYTE)(c) == 0x68 && *(PBYTE)(c + 0x05) == 0xFF && *(PBYTE)(c + 0x06) == 0x15 && *(PBYTE)(c + 0x0B) == 0x68 && *(PBYTE)(c + 0x10) == 0xFF && *(PBYTE)(c + 0x11) == 0x15 && *(PBYTE)(c + 0x16) == 0xA1 && *(PBYTE)(c + 0x1B) == 0x83)
slots = (DWORD*)(*(DWORD*)(c+0x01));
NotPatched = false;
}
if (NotPatched)
{
int a,b,c;
for(a=0x01D10000;a<0x01D8FFFF;a++)
if(*(PBYTE)(a) == 0x68 && *(PBYTE)(a + 0x05) == 0xE8 && *(PBYTE)(a + 0x0A) == 0x6A && *(PBYTE)(a + 0x0B) == 0x07 && *(PBYTE)(a + 0x0C) == 0x68 && *(PBYTE)(a + 0x11) == 0xFF && *(PBYTE)(a + 0x12) == 0x15 && *(PBYTE)(a + 0x17) == 0x68)
{
pEngfuncs = (cl_enginefunc_t*)*(DWORD*)(a+0x0D);
ppmove = (playermove_s*)*(DWORD*)(a+0x18);
}
for(b=0x01D10000;b<0x01D8FFFF;b++)
if(*(PBYTE)(b) == 0x68 && *(PBYTE)(b + 0x05) == 0x68 && *(PBYTE)(b + 0x0A) == 0x6A && *(PBYTE)(b + 0x0B) == 0x01 && *(PBYTE)(b + 0x0C) == 0xFF && *(PBYTE)(b + 0x0D) == 0xD0 && *(PBYTE)(b + 0x0E) == 0x83 && *(PBYTE)(b + 0x27) == 0xC3)
{
pstudio = (engine_studio_api_s*)*(DWORD*)(b+0x01);
ppinterface = (r_studio_interface_s**)*(DWORD*)(b+0x06);
}
for(c=0x01D60000;c<0x01D8FFFF;c++)
if(*(PBYTE)(c) == 0x68 && *(PBYTE)(c + 0x05) == 0xFF && *(PBYTE)(c + 0x06) == 0x15 && *(PBYTE)(c + 0x0B) == 0x68 && *(PBYTE)(c + 0x10) == 0xFF && *(PBYTE)(c + 0x11) == 0x15 && *(PBYTE)(c + 0x16) == 0xA1 && *(PBYTE)(c + 0x1B) == 0x83)
slots = (DWORD*)(*(DWORD*)(c+0x01));
NotPatched = false;
}