¿Paquetes cifrados en WPE Pro?

Iniciado por Nashi, 21 Agosto 2014, 10:51 AM

0 Miembros y 1 Visitante están viendo este tema.

Nashi

Buenas, he seguido un manual en este foro sobre hacking de juegos online con WPE Pro. He decidido hacer lo mismo, pero en un juego bastante mas complicado que en que lo explican, creo yo, y el problema es que en los paquetes no lo deduce tan bien, sino que aparecen puntos, números y alguna letra, cosa que nosé si estará cifrado o algo pero no se puede deducir nada de esos mensajes. Hay alguna manera de descifrar o algo para hacer-los mas deducibles?? como aparece en las explicaciones... porque en la manera que aparece no se entiende nada.
Saludos

ivancea96

Los envíos de datos no tienen por qué ser en texto plano. Cada byte es un número, no una letra, y cada número puede representar un valor. Puede estae cifrado, y puede no estarlo. Los datos que se envían no son para que los lean las personas, sinó los clientes y servidores.

Nashi

Si pero en el caso explicado que vi, los mensajes de send y recv podrias deducir un poco a que se referían en el juego y entoces hacer la "dll", en cambio, en mi caso no puedo deducir nada y al programar la "dll" no se que poner para que se refiera a lo que yo quiero.

Høl¥

#3
Mmm podrías probar a realizar cosas que impliquen packets en los que pienses que debería haber cadenas de texto, en un juego deberías poder encontrar nombres de otros jugadores, de monstruos, npcs y demás. Otro ejemplo es el login, ahí se debe enviar tu nombre de usuario y debe ser visible, si no lo puedes ver es que debe estar cifrado.

Si están verdaderamente cifrados, puedes poner un breakpoint en las típicas funciones de las cuales ya has mencionado dos de ellas send y recv, en algunos casos se utilizan otras como WSASend/WSARecv y ver con un debugger que es lo que ocurre justo antes de enviar/recibir los packets.

Nashi

Holy, he abierto el OllyDbg y el juego, le di "attach" y se me abrio las instrucciones y todo eso del programa. Busque la función "send" y le puse un "BreakPoint". Entoces a la ventana de abajo a la derecha vi de de que dirección venia y fu a ella. No se si a eso te referías, tengo una captura de pantalla pero no se ponerla aqui.

Høl¥

Sí a eso me refería. De esa forma deberías llegar a algo parecido a esto (no igual exactamente los parámetros pueden variar y las direcciones ya que no es el mismo programa).

007ADC99  |. 6A 00          |PUSH 0                                  ; /Flags = 0
007ADC9B  |. 8B45 F8        |MOV EAX,DWORD PTR SS:[EBP-8]            ; |
007ADC9E  |. 50             |PUSH EAX                                ; |DataSize
007ADC9F  |. 8B4D 08        |MOV ECX,DWORD PTR SS:[EBP+8]            ; |
007ADCA2  |. 51             |PUSH ECX                                ; |Data
007ADCA3  |. 8B55 FC        |MOV EDX,DWORD PTR SS:[EBP-4]            ; |
007ADCA6  |. 8B82 E8000100  |MOV EAX,DWORD PTR DS:[EDX+100E8]        ; |
007ADCAC  |. 8B48 58        |MOV ECX,DWORD PTR DS:[EAX+58]           ; |
007ADCAF  |. 51             |PUSH ECX                                ; |Socket
007ADCB0  |. FF15 24177F00  |CALL DWORD PTR DS:[<&WS2_32.#19>]       ; \send


Aquí se hace la llamada a la función send que es la que envía el packet y en donde pone Data es donde está el packet osea este trozo:

007ADC9F  |. 8B4D 08        |MOV ECX,DWORD PTR SS:[EBP+8]            ; |
007ADCA2  |. 51             |PUSH ECX                                ; |Data


Y viene del registro ECX, que a su vez viene de [EBP+8]. Los [EBP+8], [EBP+C], [EBP+10], etc indican el primer, segundo y tercer parámetro respectivamente que se pasan a la función en la que ahora mismo estamos.

Ten en cuenta que lo que hay en ECX es un puntero al packet, para ver el packet puedes hacer click derecho en ECX y Follow in dump.

Entonces se podría buscar el inicio de esa función, generalmente empiezan por:

007ADC70  /$ 55             PUSH EBP
007ADC71  |. 8BEC           MOV EBP,ESP


Estoy suponiendo que el programa está hecho en C/C++ lo cuál no tiene que ser verdad, pero bueno la idea es esa rastrear ese valor y ver como se va modificando.



ivancea96

Tambien puedes probar a ver en los paquetes si alguna variable que tu conozcas (ej. vida de un personaje) está en ese paquete. En ASCII supongo que no, pero quizás sí en hexadecimal.

wasom15

Hola, a todos tengo el mismo problema que usuario de aqui, e capturado algunos paquetes pero esto envia y recibe solo puntos "........" sin ningun formato, tambien comentan que modificando el codigo maquina del juego viendo la función de cifrado, pero pienso que si hago esto el servidor recibe el cifrado y lo decifra, en caso de que reciba el decifrado no podría pasar algo malo?

Aquí una imagen de los paquetes


también la función de login, no aparece solo puros ..... y el codigo hexadecimal tampoco quiere decir nada aun que ahi si cambia algunos valores cada vez que cambio el usuario.




http://www.subeimagenes.com/img/sin-titulo-1281158.png

MCKSys Argentina

Cita de: wasom15 en 13 Abril 2015, 04:14 AM
e capturado algunos paquetes pero esto envia y recibe solo puntos "........" sin ningun formato

En realidad no son "puntos". Los "puntos" son una forma de decirte que el caracter que está en esa posición no es imprimible.

Cita de: wasom15 en 13 Abril 2015, 04:14 AM
tambien comentan que modificando el codigo maquina del juego viendo la función de cifrado, pero pienso que si hago esto el servidor recibe el cifrado y lo decifra, en caso de que reciba el decifrado no podría pasar algo malo?

La idea es que analices el código del juego y puedas interpretar las esctructuras de los paquetes. No, que envíes el paquete descifrado.

Necesitas analizar y entender qué hace el código para generar el paquete y así podrás interpretar su contendio.

Saludos!

PD: Con respecto a las imágenes: Si vas a "ocultar texto", también deberías ocultar la representación hexa del mismo... (impresionte, ChiChudA:silbar:
MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."


wasom15

Y como lo puedo hacer imprimible en ese caso, con respeto a lo del login que no aparece los caracteres a como yo los escribo en la caja de texto del juego :s

y lo del hexadecimal oculto pues si  ;-) ;-)  :laugh: