Here is MY version of CoD4 Chams...Enjoy!
Code:
// Globally defined
DWORD * _ESP;
char * ModelName;
// Inside DrawIndexedPrimitive
if( (DWORD)_ReturnAddress( ) == ChamsReturnAddress )
{
__asm mov _ESP, esp
if( !IsBadReadPtr( (void *)( _ESP + 0x18 ), 8 ) && *( _ESP + 0x18 ) )
{
if( !IsBadReadPtr( (void *)( *( _ESP + 0x18 ) + 0xB8 ), 8 ) &&
!IsBadReadPtr( (void *)*(DWORD *)( *( _ESP + 0x18 ) + 0xB8 ), 8 ) &&
!IsBadReadPtr( (void *)**(DWORD **)( *( _ESP + 0x18 ) + 0xB8 ), 8 ) )
{
ModelName = (char *)**(DWORD **)( *( _ESP + 0x18 ) + 0xB8 );
if( ModelName )
{
if( !strstr( ModelName, "mi24p" ) && !strstr( ModelName, "cobra" ) )
{
if( strstr( ModelName, "opforce" ) || strstr( ModelName, "op_force" ) || strstr( ModelName, "head_suren" ) || strstr( ModelName, "arab" ) )
ChamsTeam = 2;
else if( strstr( ModelName, "sas" ) || strstr( ModelName, "usmc" ) || strstr( ModelName, "marine" ) )
ChamsTeam = 1;
// Do the chams drawing here
ChamsTeam = 0; // Don't forget this!
}
}
}
}
}
here's the pattern for ChamsReturnAddress:
Code:
"\x5F\x5E\x5D\x5B\x83\xC4\x0C\xC3\xCC\xCC\xCC\xCC\xCC\xCC\xCC\xCC\xCC\xCC\xCC\xCC\x83\xEC\x0C\x53", "xxxxxxxxxxxxxxxxxxxxxxxx"
Save to your hack or a .dll file i dont care what do with it!