La verdad que el metodo no es nuevo, pero no vamos a quitarle merito y hay que reconocer que es efectivo ante wallhacks comunes. la proteccion esta en la parte cliente (en nuestro pc) y eso no es una cosa que me agrade mucho ya que se puede hacer lo mismo desde la parte servidor, pero eso ya son opiniones personales.
Desactivando esta proteccion:
hay que darle un vistazo a la funcion GetEntityByIndex del engine del juego:
01D0ECC0 8D4424 04 LEA EAX,DWORD PTR SS:[ESP+4]
01D0ECC4 50 PUSH EAX
01D0ECC5 FF15 CCD4EC01 CALL DWORD PTR DS:[1ECD4CC] ; hl.01D63580
01D0ECCB 8B4424 08 MOV EAX,DWORD PTR SS:[ESP+8]
.....
.......
de la direccion 01D0ECC5 nos interesa el puntero 1ECD4CC. de esta forma devolveremos un index invalido y el sXe no escondera ningun jugador.
Código:
miPtr=(DWORD*)0x1ECD4CC; //puntero hardcodeado en GetEntityByIndex
*miPtr=(DWORD)ActivaWH; //apuntamos a nuestra funcion
Código:
void __fastcall ActivaWH()
{
__asm {
mov dword ptr [eax],0 //retornamos un index invalido
retn
}
}