¡Cómo utilizar VB para enviar paquetes de datos a un puerto IP específico! !
Análisis externo
Analizo principalmente la tecnología de complementos. En cuanto a la estructura interna del juego, es diferente y no se explicará aquí. No soy tan bueno, todo el mundo lo sabe, ¡jaja!
1 El primer principio del complemento del juego
Ahora existen muchos tipos de complementos, algunos simulan el teclado y el mouse, algunos modifican los paquetes de datos y otros modifican la memoria local, pero parece que no modifican la memoria del servidor si jaja! De hecho, hay una manera de modificar el servidor, ¡pero la tecnología es demasiado avanzada para que la gente común pueda comenzar! (Por ejemplo, puedes modificar los datos del servidor invitando al GM a una discoteca, dándole regalos, recolectando dinero, etc., jaja)
Modificar el juego no es más que modificar los datos en la memoria local , o interceptar funciones API, etc. Aquí presentaré todos los métodos que se me ocurren. Espero que todos puedan crear un buen complemento para que los fabricantes de juegos puedan mejorar mejor su tecnología.
Vi un artículo sobre el análisis teórico de Pokémon que estaba muy bien escrito, y probablemente era así.
Cuando baje explicaré los aspectos técnicos con el fin de llamar la atención.
2 Parte de análisis técnico
1 Simular la respuesta del teclado o ratón.
Generalmente usamos UINT SendInput(
entrada UINT, //recuento de eventos de entrada
entrada LPINPUT, //matriz de eventos de entrada
int cbSize // Tamaño de la estructura
); Función API
El primer parámetro describe la dimensión de la matriz del segundo parámetro y el segundo parámetro contiene el evento de respuesta, que puede ser Llénelo usted mismo. Finalmente, el tamaño de esta estructura es muy simple, y es la forma más sencilla de simular un teclado y un mouse, jaja.
Nota: Esta función también tiene una función alternativa:
VOID keybd_event(
BYTE bVk, //código de clave virtual
palabra Sección bScan, //Escanear código
DWORD dwFlags,
ULONG_PTR dwExtraInfo //Otro estado de clave
y
VOID mouse); Event(
DWORD dwFlags, //Opciones de movimiento y clic
DWORD dx, //Posición horizontal o cambio
DWORD dy, //Posición vertical o cambio
DWORD dwData, //movimiento de la rueda
ULONG_PTR dwExtraInfo //información definida por la aplicación
);
Ambos La función es muy simple. Creo que eso es lo que usan los asistentes clave. Jaja, el teclado simulado en la parte superior y el mouse simulado en la parte inferior.
Esta es sólo la parte de simulación. Para conectarnos a un juego, necesitamos encontrar la ventana del juego o la tecla de acceso directo que contiene. Al igual que la clave de activación del asistente de claves, podemos usar la función GetWindow para enumerar ventanas, y también podemos usar la función FindWindow para buscar ventanas de fórmulas (tenga en cuenta que también hay una Findwindow). FindWindow puede encontrar las ventanas secundarias de una ventana. Como botones y otras cosas. Cuando el juego cambia de escena, podemos usar FindWindowEx para determinar algunas características de la ventana actual y determinar si todavía está en esta escena. Hay muchos métodos, como dejar que GetWindowInfo determine algo. Por ejemplo, si no se puede encontrar un botón, significa que se ha cambiado la escena del juego, etc. Algunos juegos no tienen controles, por lo que este método es limitado si deseas coordinar la transformación de la imagen. Esto requiere que utilicemos otros métodos.
En cuanto a las teclas de acceso directo, necesitamos utilizar una biblioteca de enlaces dinámicos, que utiliza tecnología de enlace. Esto también es muy sencillo, puede que todo el mundo lo sepa. De hecho, es un objeto de enlace global y luego se puede utilizar SetWindowHook.
Todas las funciones de devolución de llamada están listas para usar y hay muchos ejemplos en Internet, y este tipo de implementación es muy común en los complementos. Si alguien todavía no entiende, mire msdn para encontrar SetWindowHook.
Esta biblioteca de enlaces dinámicos es muy útil. No lo subestimes. Puede abarcar todos los espacios de proceso, lo que significa que se puede cargar en todos los juegos. ¡Siempre que lo uses correctamente, te resultará muy útil!
Esto requiere que revises los conocimientos básicos de programación win32 Jaja, ¡lee el libro!
2 Interceptación de mensajes
En algunos juegos, el mecanismo de respuesta es sencillo, basado en mensajes, o algo con un temporizador. En este momento, se pueden lograr algunas funciones interesantes interceptando mensajes.
También utilizamos tecnología de enlace para interceptar mensajes, incluidos mensajes del teclado, mensajes del mouse, mensajes del sistema, registros, etc. Otros nos sirven de poco. Solo necesitamos funciones de devolución de llamada para interceptar mensajes. Esto no me permite escribir un ejemplo. De hecho, esto es lo mismo que el anterior, escrito usando SetWindowHook. Es fácil de ver.
En cuanto a qué hacer después de la interceptación, eso es asunto suyo. Por ejemplo, si procesa algunos de nuestros juicios de datos en cada mensaje del temporizador, o simula un temporizador en el temporizador, entonces algunos datos se procesarán. Hazlo dos veces, jaja, las consecuencias no son necesariamente buenas, jaja, pero si pones el cálculo de datos en el juego del cliente, puedes cambiar los datos, jaja, ¡pruébalo! Hay muchos usos, puedes pensar en ellos tú mismo, ¡jaja!
3 Intercepción de paquetes de socket
Esta dificultad técnica es mucho mayor que antes, así que prepárate.
En primer lugar, necesitamos reemplazar winSock.dll o winsock32.dll. La función de reemplazo que escribimos debe ser consistente con la función original, es decir, qué tipo de función genera su función. saldrá. La función, los parámetros y el orden de los parámetros deben ser los mismos, y luego podemos llamar a la función real en winSock32.dll en nuestra función.
Primero, podemos reemplazar la ruta desde la biblioteca dinámica al sistema.
En segundo lugar, cuando se inicia nuestra aplicación, podemos cargar la biblioteca dinámica original y usar esta función LoadLibary.
Luego ubique la entrada de la función y use la función GetProcAddress para obtener la dirección de entrada de cada función de socket real.
Cuando el juego está en progreso, llamará a nuestra biblioteca dinámica y luego saltará a la dirección de función de la biblioteca dinámica real después del procesamiento desde nuestra biblioteca dinámica, para que podamos procesar nuestros propios datos en ella. , todos deberían ser datos. jeje!
Además de la emoción, tenemos que analizar los paquetes de datos interceptados para poder responder correctamente. ¡No penséis que el trabajo se acaba así, jaja! Aún es temprano. Después del análisis, tenemos que simular el mecanismo de respuesta para comunicarnos con el servidor. Si no tenemos cuidado, nos bloquearán. ¡Jaja, me bloquearán mucho!
El análisis de datos es la fuente de la carga de trabajo y el método de cifrado puede cambiar cada vez que se actualiza el juego, por lo que todos somos fugitivos que escriben complementos y no sabemos cuándo estaremos entretenidos. , ¡ja ja! (Dijo que no gano dinero, soy libre)
Bien, para darle un buen punto de partida, aquí hay un código fuente de socket de reemplazo completo, ¡jaja!
/vchelp/zsrc/wsock32_sub.zip
4 Interceptación de API
Si podemos utilizar de manera flexible la tecnología anterior, no necesitamos interceptar funciones de API. De hecho, esta tecnología es una tecnología complementaria. Por ejemplo, usaríamos esta técnica si necesitáramos interceptar una función fuera del socket. De hecho, también podemos usarlo para interceptar funciones directamente en el socket, lo cual es más directo.
Actualmente, existen muchos tutoriales sobre cómo interceptar API, por lo que no los enumeraré todos. Mi método preferido es interceptar según el segmento de entrada. Este método se puede utilizar en cualquier sistema operativo, como 98/2000, etc. Algunos métodos no son multiplataforma, por lo que no recomiendo usarlos. Puede consultar el contenido que comienza en la página 545 de "Programación básica de Windows" para aprender esta tecnología.
Si es un sistema 98, puedes aprenderlo en el último capítulo de "El misterio del sistema de ventanas".
Pues hay muchísimas maneras. Depende de cómo los uses. No hablaré aquí de otras habilidades específicas, de lo contrario alguien me matará, ¡jaja!
Recuerda que cada juego se modifica de forma diferente. Si todo el procesamiento de datos de un juego está en el lado del servidor, entonces será mejor que no escribas un complemento, jaja, como máximo, escribe un complemento para caminar automático, ¡jaja!
A la hora de analizar datos, todo el mundo debe tener cuidado de no intentar conectarse fácilmente al servidor, porque es muy peligroso, ¡así que no lo hagas! Una vez que tenga una gran cantidad de resultados de análisis de datos, tendrá más confianza. Inténtalo de nuevo y comprueba si tienes suerte. Es muy probable que tenga éxito, ¡jaja!
De hecho, el programa que simula al cliente también es bueno, muy adecuado para usuarios de oficina, dependiendo del posicionamiento del producto.
Vale, deja de hablar, ¡trabajemos duro! No se deje engañar por los fabricantes de juegos, dañará nuestra imagen. Desarrollamos el juego para mejorarlo, no queremos alterar el equilibrio del juego. ¡Ay, ese no parece ser el caso ahora! ¡Detente y déjalo ir!