miércoles, 1 de julio de 2009

Anti Anti Wallhack para sXe 7.8

Una de las novedades de este anticheat es el anti wallhack, de este modo aun pasando las protecciones del anticheat un wallhack no seria efectivo y no mostraria los jugadores detras de las paredes.

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
}
}
y con esto ya esta el anti wallhack anulado. espero que a alguien le ayude.