DWORD SeeGhost;
SeeGhost = FindPattern((DWORD)GetModuleHandleA("crossfire.exe"), 0x2D7000, (BYTE *)"\x75\xFF\x83\x0D\xFF\xFF\xFF\xFF\x01\xB8\xFF\xFF\xFF\xFF\xE8","x?xx????xx????x");//pocurando o endereço onde a renderização é feita
SeeGhost = *(DWORD *)(SeeGhost + 0xA) + 0xB8;
if(ghost)
{
*(DWORD *)(SeeGhost) = 14;//ligado
}
else
{
*(DWORD *)(SeeGhost) = 5;//desligado
}

DWORD FindPattern(DWORD dwAddress,DWORD dwLen,BYTE *bMask,char * szMask)
{
for (DWORD x = 0; x < dwLen; x++)
if( Compare( ( BYTE * )( dwAddress + x ), bMask, szMask ) )
return ( DWORD )( dwAddress + x );
return 0;
}
bool Compare(const BYTE* pData, const BYTE* bMaskara, const char* szMaskara)
{
for(;*szMaskara;++szMaskara,++pData,++bMaskara)
if(*szMaskara=='x' && *pData!=*bMaskara )
return false;
return (*szMaskara) == NULL;
}