lunes, 3 de agosto de 2009

Protocolo del sXe injected.

Protocolo sXe Injected

Bueno despues de pensarlo bien decidimos hacer publico el protocolo de sXe Injected, podeis crear vuestros propios emuladores o para la gente que quiera hacer una implementacion para sistemas operativos oficialmente no soportados (linux,sistemas de 64 bits y todo aquel SO donde cs pueda ser ejecutado).

Protocolo base: Esta es la forma que el cliente se comunica con el servidor y se verifica que tengas el sXe injected y la version requerida en el servidor.

Lo primero es hookear el mensaje de usuario “sXe-I”, este mensaje de usuario consta de un char que es la version (actualmente seria 7.8 lo que nos enviaria el servidor) y una variale de tipo DWORD (time_t), yo personalmente tengo un struct para manejar todo esto, ya es cosa de cada cual adaptarlo a su manera. Esta ultima variable es lo que hace que el hash de validacion sea dinamico y no sea siempre el mismo.

Ahora que ya sabemos que es lo que se nos envia, tenemos que ver que hacemos con estos datos. Tenemos que montar una cadena exactamente de este estilo:

sprintf(tmp,"%s%s.%s.%s.%s.%d",rep.version,t2,t,t4,t3,rep.num);

siendo rep.version la version que nos envia el servidor, t2,t,t4 y t3 son las partes de la direccion ip del servidor ordenadas de esta forma:

si la ip fuese 10.11.12.13 nos quedaria de esta forma: 11.10.13.12.

y rep.num es la una variable del tipo DWORD (time_t) que como mencionamos antes es variable siempre (mirar la funcion time).

De este modo y con la ip ficticia nos quedaria la cadena de esta forma:

7.811.10.13.12.DATOS-VARIABLES

Solos nos queda sacar el hash md5 de la cadena y mandarle la respuesta al servidor de esta forma:

[sXe-I-Reply] %s CLEAN 32 , siendo %s el hash md5 anterior. De esta forma el servidor nos toma como un cliente que realmente esta usando sXe injected y con 32 bits.

En la nueva version se implemento un protocolo aparte, que es la validacion por Hwid. Un pequeño consejo….. no useis algoritmos publicos porque nada mas ver el desensamblado se pudo determinar “al vuelo” que usabais RC4, ese bucle incial…. Es muy cantarin.

Bueno al lio, el mensaje de usuario que nos interesa en esta ocasión es “sXe-I-H”, y solo nos llegaran otra vez datos del tipo DWORD (time_t) “aleatorios”. Esta vez la cadena a montar es esta:

sprintf(Buffer,"%dSTART%dTREK",Time,Time);

esta cadena es usada como clave para la encriptacion RC4 del HWID, para asi poder enviarsela al servidor de esta forma:

[sXe-I-H-Reply] 22EB32BD43BC70536B9828E0220E98E8B0647DC9CA2FC870C785276FD6A5D17320873D

Este HWID es falso, ya que siempre uso HWIDS falsos. ¿de donde sale esta cadena? Es el resultado de la encriptacion RC4 del HWID pasada a hexadecimal, supongo que por confundir o por comodidad a la hora de manejarla mediante comandos. Lo que mas llama la atencion despues de observar un par de veces la cadena que generaba el sXe injected es que siempre empezaba por 0x22…. Tiremos del hilo.

Un HWID sin encriptar:

1059-54A8-2B01-341D-76C8-845B-7435 = 34 caracteres

Un HWID encriptada:

22EB32BD43BC70536B9828E0220E98E8B0647DC9CA2FC870C785276FD6A5D17320873D = 70 caracteres.

Ummmmmmm que cosas, 70 de longitud y 24 la otra 70 / 2 = 35…. Joder que casualidad, 34 sin encriptar y encriptada me da 35… y hay un carácter fijo, descontemos ese 22 y tenemos exactamente esto: 70 /2 -1 = 34 demasiada casualidad es todo esto. pero mas aun si pasamos el 34 a hexadecimal…. Veamos 34 decimal 0x22 en hexadecimal. Esta mas que claro lo que es ese 22 inicial, no es mas que la longitud del HWID sin encriptar.

Una vez tenemos esto claro nos queda bien poco, en mi caso uso un fichero de texto para cargar HWIDS falsos, montar la clave de la forma que mostramos antes , encriptar el HWID y enviarlo al servidor cuando nos lo pida. Bueno pues ya llegadoa a este punto nos queda enviar este reply al servidor:

[sXe-I-H-Reply] 22EB32BD43BC70536B9828E0220E98E8B0647DC9CA2FC870C785276FD6A5D17320873D

Con esto nos validamos como usuarios de sXe injected y encima enviamos datos falsos para que no puedan banearnos, ya tenemos nuestro propio cliente para sXe injected 100% funcional, valido para cualquier sistema y con la seguridad de no ser baneados localmente por el anticheat.

Fue divertido revertir completamente el anticheat, publico esto sin codigo fuente por evitar la oleada de chetos en todos los servidores, esto es todo con fines educativos y para que el que entienda pueda portar sXe injected a su sitema favorito.

Si alguien esta interesado en portar el anticheat y le quedan dudas puede ponerse en contacto conmigo atraves de sicheats y sin problemas hablamos sobre el tema.

Ahora unas lineas para mis queridos frikis, topos y insectos varios que pululan por la red. Los topos ya les he tomado cariño, y la verdad entiendo que gente que quiera jugar sin cheats hagan según que cosas para evitarlos….. esta gente no tengo mayor problemas con ellos y poco mas tengo que decir de ellas…. A excepcion de WEILAND este moderador psicopata que me banea todas las cuentas cuando me comporto correctamente en sus foros.

Los que realmente me dan asco son los que formaron parte del staff de sicheats para sacar tajada de ello, no voy a nombrarlos porque todos sabemos quien son. ¿solo queriais cheats? Jaja que pena dais, pues no teniais cheats no frikis. Ahora a alguno de vosotros piensa que soys necesarios para algo … de cara a los cheats ¿alguna vez me ayudasteis en algo? Porque todas las sesiones que me he pegado de ollydbg y herramientas varias nunca vi a ninguno de vosotros ¿aun pensais que soys necesarios para sacar cheats? Jajajaja. Con esto no me retiro de los cheats, pero si paso pagina, y cuando sXe injected cambie o actualice el protocolo volvere a revertirlo pero ya como diversion que es lo que siempre he buscado. ¿Qué mas deciros? Poco mas, disfrutar de los cheats publicos (esos que sacais vosotros ¿Cuándo?) que sicheats continua trabajando duro como siempre.

Saludos Cocodrilo, www.sicheats.com

13 comentarios:

  1. Coco estoy usando tu emulador sxe, pero necesito actualizar el hwid porq estoy baneado en casi todos los servers, encima me banean los fucking admins chiteros (estoy con vos en eso, solo entran para tener chit fucking fracasados). Necesito me expliques un poco como generar o recibir del server hwid validos para cambiar el q tengo hasta el momento. Podrías hacer un comentario o algo por el estilo donde me aclares un poco, o si tenes algo para generar estos hwid validos. Gracias. Sos lo mas coco...

    ResponderEliminar
  2. Coco no m harias un emulador del injected 8.0 plis?

    ResponderEliminar
  3. coco me anvias la invitacion para sicheat.com ? te lo agradeseria :D

    ResponderEliminar
  4. QUE GROSO!!!!! LA VERDAD ES UN GENIO , MIRO Y TRATO DE ENTENDER PERO NO PUEDO , EN QUE IDIOMA HABLA? JAJA SALUDO Y MUY BUENO LO SUYO .!!!

    ResponderEliminar
  5. eee COCO SOS UN CAPO USE SIEMPRE TUS CHEATS CON h4x0r SoS un Capo NESESITO UN EMULADOR DE 8.0 PorFAAA

    ResponderEliminar
  6. Flaco sos un maestro. Lastima que se poco de programación y no se en que estas trabajando.


    Pero gracias x todo igualmente

    ResponderEliminar
  7. me puedes aclarar donde se tiene que hacer todo eso? es en algun programa en especial...? bueno cocodrilo ke decirte sos un genio la verdad sos un idolo :D

    ResponderEliminar
  8. Cocodrilo,

    Ante todo gracias por esta gran guia, te comento que estoy desarrollando un emulador para de SXE para Linux.

    No se si tienes idea sobre las ultimas versiones, y que tanto ha cambiado el protocolo...

    Espero poder contactarte.

    ResponderEliminar
  9. hola amigo pero que orograma usas para hacer todo esto me podes hablar en privado por mi correo de facebook que Gabriel Araujo

    ResponderEliminar
  10. hola amigo pero que orograma usas para hacer todo esto me podes hablar en privado por mi correo de facebook que Gabriel Araujo

    ResponderEliminar
  11. bro que pasaria con esta parte del code que este int sXePing(const char* /*pszName*/, int /*iSize*/, void */*pbuf*/){
    return 0;

    ResponderEliminar