¿Cómo utilizar paquetes WPE para modificar datos de juegos en línea? Primero, guardamos el paquete de datos interceptado por WPE como un archivo de texto, y luego lo abrimos, verá los siguientes datos (aquí tomamos los datos enviados por el cliente PK Archer en "Leyenda" como un ejemplo) Descripción): Primer archivo SEND-gt; 0000 E6 56 0D 22 7E 6B E4 17 13 13 12 12 13 13 67 1BSEND-gt 0010 17 12 DD 34 12 12 12 17 12 0E 12 12 9BSEND-gt.0010 1 7 12 DD 34 12 12 12 12 17 12 0E 12 12 12 9BSEND-gt 0000 E6 56 1B C0 68 12 12 5ASEND; -gt;0000 E6 56 02 C8 13 C9 7E 6B E4 17 10 35 27 13 12SEND-gt; 001 0 72 77 07 1C 77 77 77 77 72 77 77 77 6DSEND-gt 0000 83 33 7B 94 4C 63 72 77 5E 6B 72 F3SEND-gt; -gt; 00 83 33 67 d.C. 76 CF 1B 0E 81 72 75 50 42 76 77 77 77SEND-gt.0000 83 33 72 AC 77 Descubrimos que el formato de datos de los dos arqueros PK es el mismo, pero el contenido es diferente. ¿Por qué será diferente? Resulta que los paquetes de datos de "Legend" se cifran antes de transmitirse a través de la red, por lo que nos enfrentamos al problema de cómo descifrar el texto cifrado en texto plano para su análisis. Debido a que el cifrado general de paquetes de datos es una operación XOR, primero hablemos de qué es XOR. En pocas palabras, XOR significa "lo mismo es 0, lo diferente es 1" (esto es para bits binarios), por ejemplo, 0001 y 0010 son XOR, comparamos bit a bit y el resultado de XOR es 0011. Método de cálculo Sí: el cuarto bit de 0001 es 0, el cuarto bit de 0010 es 0, son iguales, el cuarto bit del resultado XOR se ajusta al principio de "lo mismo es 0, lo diferente es 1". El tercer bit de 0001 es 0, el tercer bit de 0010 es 0, el tercer bit del resultado es 0, el segundo bit de 0001 es 0, el segundo bit de 0010 es 1, el segundo bit del resultado es 1, 0001 El primer bit es 1, el primer bit de 0010 es 0, el primer bit del resultado es 1 y la combinación de estos dos bits es 0011. Hay muchos, puede familiarizarse con ellos primero y un análisis competente es muy útil.
Sigamos mirando los dos archivos anteriores. Según el sentido común, no todos los datos en el paquete de datos tendrán valores numéricos. Durante el desarrollo del juego, se reservará algo de espacio en bytes para futuras expansiones, lo que significa que habrá algunos en ellos. el paquete de datos. "00" bytes, observando el archivo anterior, encontraremos que hay muchos "12" en el archivo y muchos "77" en el archivo, entonces, ¿esto representa lo que llamamos "00"? Entonces, ¿esto representa lo que llamamos "00"? Con eso en mente, ¡comencemos! Archivamos un archivo como "12" o dos archivos como "77". Por supuesto, es muy laborioso calcularlo a mano. Es mucho más conveniente para nosotros utilizar el "Analizador de paquetes sellados M2M 1.0 Plus". Obtuve los siguientes resultados: Primer archivo: 1 SEND-gt; 0000 F4 44 1F 30 6C 79 F6 05 01 01 00 01 00 01 75 09SEND-gt; 892 ENVIAR-gt; 0000 F4 44 0C E3 3B 13 05 00 29 1C 05 083 05 00 29 1C 05 083 ENVIAR-gt 0000 F4 44 1 0 DA 01 DB 6C 79 F6 05 02 27 35 01 00 005 ENVIAR-gt 0000 F4 44 05 DB 00 Segundo archivo: 0000 F4 44 1F 30 6C 79 F6 05 01 01 00 01 00 01 75 09ENVIAR-gt; 00 00 05 00 05 00 00 00 00 1A2 ENVIAR-gt.0000 F4 44 0C E3 3B 13 05 00 29 1C 05 843 ENVIAR-gt.0000 F4 44 09 D2 56 00 00 00 484 ENVIAR-gt; 01 B8 6C 79 F6 05 02 27 35 01 00 005 SEND-gt; 0000 F4 44 05 DB 00 Ha, ahora los dos archivos son básicamente iguales, lo que indica que nuestro razonamiento es correcto, ¡y lo anterior es el texto que necesitamos! ¡El siguiente paso es encontrar algunos versículos clave! A continuación, debemos descubrir el significado de algunos bytes clave, lo que requiere interceptar una gran cantidad de datos para su análisis. Primero, encontraremos que cada paquete de datos comienza con "F4 44" y el tercer byte cambia, pero los cambios son muy regulares. Echemos un vistazo a la longitud de cada paquete de datos. ¿Encuentra algo? Así es, ¡el tercer byte es la longitud del paquete de datos! Al interceptar una gran cantidad de paquetes, determinamos que el cuarto byte representa un comando, donde el cliente le dice al servidor qué hacer. Por ejemplo, una solicitud de comando de combate al servidor es "30", un comando de movimiento en combate es "D4", y así sucesivamente. A continuación, debemos analizar el primer paquete anterior "F4 44 1F 30 6C 79 F6 05 01 01 00 01 00 01 00 01 00 01 75 09 05 00 CF 26 00 00 00 00 05 00 1C 00 00 00 89", ¿qué información está contenido en este paquete de datos? Debería ser el NPC que notificó al servidor sobre tu PK. Primero busquemos el código del propietario de la tienda en algún lugar.