Red de conocimiento informático - Conocimiento del nombre de dominio - Cómo crear software auxiliar DNF

Cómo crear software auxiliar DNF

Antes que nada déjame decirte esto: estoy copiando el trabajo de otra persona, espero que te pueda ayudar.

1. Primero hablemos de los requisitos para escribir un complemento.

1. Conocimiento competente del lenguaje C

La mayoría de los complementos actuales utilizan BC. o Escrito en Delphi o VC, ¡tener un conocimiento competente del lenguaje C es la condición básica para escribir complementos!

2. Tener una base sólida de ensamblaje

Es imposible que los juegos comunes puedan hacerlo. tener código original Sí, debemos confiar en el desmontaje o el rastreo para explorar el mecanismo

, por lo que una base de ensamblaje sólida también es una condición esencial

Competente en herramientas de rastreo y depuración<. /p>

Después de cumplir las dos condiciones anteriores, también es necesario dominar algunas herramientas

Softice es, por supuesto, la mejor opción para las herramientas de seguimiento. En cuanto a las herramientas de desmontaje, se recomienda su uso. IDA PRO

El código desensamblado por esta herramienta tiene una estructura clara y es muy fácil de leer

Si no cumple con las condiciones anteriores, es mejor sentar las bases primero y luego escriba el complemento. No importa cuánto trabaje, no importa lo que gane, no hay pastel en el mundo que se pierda en vano

2. ins

1. Modificar el código de ejecución del proceso

Para modificar el código de ejecución de un proceso, primero debe obtener el ID del proceso si lo inicia un complemento. programa, la ID del proceso se incluirá en el valor de retorno. De lo contrario, debe usar findwindow para encontrar el identificador de la ventana y luego usar GetWindowProcessID para obtener la ID del proceso. , puedes usar

writeprocessmemory para modificar el código de ejecución del proceso, de modo que el programa pueda ejecutarse según nuestros deseos. El enemigo

se implementa de esta manera

2. Interceptar los paquetes enviados y recibidos por el complemento

Además de las funciones logradas modificando el código, muchas Todas las funciones se logran modificando el paquete. primero debes poder interceptarlo.

El primer paso es rastrear las posiciones inicial y final. En cuanto a cómo rastrear, lo mencionaré más adelante. Después de encontrar la posición, hay dos formas de agregar una a esa posición. /p>

Instrucción jmp, salte a la ubicación de su función de procesamiento y, después del procesamiento, regrese. Este método es más exigente y necesita manejar muchas cosas. Otra forma

es. vaya a esa ubicación Escriba una instrucción que pueda causar una excepción, como int 3, y luego use DebugActiveProcess para depurar el proceso del juego, de modo que cada vez que el juego llegue a esa posición, se detendrá e irá al programa de complemento para esperar. para el complemento Una vez procesado el programa, utilice ContinuarDebugEvent para continuar ejecutando el programa.

Escribiendo mucho por hoy, la próxima vez discutiremos cómo implementar las funciones específicas del complemento.

Hoy hablaremos sobre la investigación de direcciones. La parte más difícil y más difícil de escribir complementos es un desafío. Muchos amigos me pidieron el programa original del complemento. De hecho, si tiene el programa original del complemento, todavía lo es. inútil si no sabes cómo verificar la dirección.

La relación entre el programa original y la dirección es como en las artes marciales, la relación entre los movimientos y la fuerza interna es que los movimientos sin fuerza interna son solo un espectáculo. Después de dominar las habilidades internas, cualquier movimiento ordinario puede volverse mágico. Las direcciones del complemento se dividen en dos categorías, una es la dirección del programa y la otra es la dirección de datos. Entre las herramientas de piedra, las herramientas de piedra doble, los colores verdaderos, no encontrar enemigos, encontrar enemigos en cada paso, enviar y recibir paquetes, etc., pertenecen a la primera categoría, mientras que las coordenadas de los personajes, el estado, etc., pertenecen a la segunda categoría.

Para el primer tipo de dirección, dependemos principalmente del software para investigar la dirección. Para el segundo tipo de dirección, puedes usar algunas herramientas del juego, como fpe, game expert, game master, etc. experto, porque no puedo encontrar fpe que pueda usarse en 2000.

Cuando usaste fpe para modificar juegos antes, nunca pensaste que también podría usarse para esto

Para la segunda categoría, la mayoría de la gente está familiarizada con los métodos de investigación de datos, por lo que no entraré en detalles. Ahora hablaré principalmente sobre el proceso de investigación detallado del primer tipo de datos. Por ejemplo, queremos investigar la ubicación del envío. paquetes ¿Cómo empezar? El cliente va a El servidor tiene que enviar muchos paquetes, pero la forma más sencilla es comenzar con los paquetes hablados. Primero diga una oración larga, preferiblemente en inglés, que sea fácil de buscar. Cuando termine de hablar, use cualquier método para ingresar al espacio de proceso del programa del juego (por ejemplo, primero use spy para averiguar el identificador de la ventana del programa del juego, luego cambie a softice y escriba bmsg window handle wm_lbuttondown, para que pueda. ingrese su espacio de proceso con un clic del mouse en el programa del juego) Luego use el comando s para averiguar dónde está esta oración Dirección de memoria, escriba esta dirección, escriba bpm en softice La dirección que acaba de investigar, este comando significa que. Siempre que haya una acción para acceder a esta memoria, interrumpa inmediatamente y luego cambie al juego. Di una palabra, encontrarás que Softice interrumpe automáticamente a una ubicación determinada. Si rastreas desde esta ubicación, la ubicación donde está el paquete. Se envía no estará muy lejos.

Todo lo anterior es para un programa de juego nuevo. Si es un programa antiguo y las personas mayores han trabajado mucho, también puedes usar otros métodos, como el desmontaje, etc. Ven a investigar. Lo mismo ocurrirá con futuras actualizaciones de versiones del juego. Simplemente escribe el código cerca de la dirección de la versión anterior y busca el código de la nueva versión, y estarás bien.

Bueno, tómate un descanso, tómate un descanso

Analizo principalmente la tecnología de complementos. En cuanto a la estructura interna del juego, cada uno es diferente, así que no lo haré. No lo explico aquí. No es tan poderoso, todo el mundo lo sabe, ¡jaja!

1 En primer lugar, el principio de los complementos de juegos

Hay muchos tipos de complementos. , como simular teclados, mouse y modificar paquetes de datos. Sí, también hay formas de modificar la memoria local, pero parece que no hay forma de modificar la memoria del servidor, ¡jaja! , pero la tecnología es demasiado alta y la gente común no puede hacerlo (por ejemplo, invitar al DJ a ir a clubes nocturnos, dar regalos, recolectar dinero negro, etc. ¡Puedes modificar los datos del servidor por otros métodos, 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 buenos complementos para ayudar. Es mejor que los fabricantes de juegos mejoren su tecnología.

Vi un artículo sobre el análisis teórico de Magical Baby. Estaba bien escrito y se veía así.

p>

Siguiente. , Explicaré los aspectos técnicos como referencia

2 Parte del análisis técnico

1 Simular la respuesta del teclado o el mouse

Generalmente usamos UINT SendInput(

UINT nInputs, // recuento de eventos de entrada

LPINPUT pInputs, // conjunto 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. El segundo parámetro contiene el evento de respuesta. Simplemente complételo usted mismo. Es muy simple. Esta es la forma más sencilla de simular el teclado y el mouse.

Está marcado, jaja

Nota: Existe una alternativa a esta función:

VOID keybd_event(

BYTE bVk, // código de clave virtual

BYTE bScan, // código de escaneo

DWORD dwFlags,

ULONG_PTR dwExtraInfo // Estado de clave adicional

); 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

);

Estas dos funciones son muy simples. Creo que esos elfos de botones usan esto, jaja, el de arriba simula el teclado y el de abajo. uno a continuación simula el mouse.

Esta es solo la parte de simulación. Para conectarlo con el juego, necesitamos encontrar la ventana del juego o incluir teclas de acceso directo, al igual que el asistente de claves. Lo mismo podemos usar la función GetWindow para enumerar ventanas, o podemos usar la función Findwindow para encontrar una ventana específica (tenga en cuenta que también hay FindWindowEx que puede encontrar las ventanas secundarias de la ventana, como botones, etc.). Cuando el juego Al cambiar de escena, podemos usar FindWindowEx para determinar algunas características de la ventana actual y determinar si todavía está en esta escena. Por ejemplo, puedes usar GetWindowInfo para determinar algo. no se puede encontrar un botón, indica que la escena del juego ya ha cambiado, etc. Algunos juegos no tienen controles. Si se trata de una transformación de coordenadas de la imagen, este método será limitado.

Hecho. Esto requiere que usemos otros métodos para ayudar en el análisis.

En cuanto a las teclas de acceso directo, tenemos que usar una biblioteca de enlaces dinámicos para implementarlas, que utiliza tecnología de enlace. Puede que esté todo hecho. De hecho, es solo un objeto de enlace global y luego SetWindowHook. Las funciones de devolución de llamada están listas y ahora hay muchos ejemplos en Internet. Esta implementación ya es muy común en los complementos. Si alguien aún no lo entiende, vaya a MSDN para encontrar SetWindowHook.

Esta biblioteca de enlaces dinámicos es muy útil, no la subestime, puede abarcar todos los espacios de proceso, lo que significa que es muy útil. se puede cargar en todos los juegos, siempre que lo uses correctamente, ¡lo encontrarás muy útil!

Esto requiere que revises los conocimientos básicos de programación win32. ¡Jaja, lee el libro rápidamente!

2 Mensajes interceptados

El mecanismo de respuesta de algunos juegos es relativamente simple, basado en mensajes o usando temporizadores. En este momento, puedes usar mensajes interceptados para implementar algunas funciones interesantes.

Interceptamos mensajes y también utilizamos tecnología de enlace, que incluye mensajes del teclado, mensajes del mouse, mensajes del sistema, registros, etc. Otros no nos son de gran utilidad. Solo usamos la función de devolución de llamada para interceptar mensajes. No se le permitirá escribir esto. Tomemos un ejemplo. De hecho, este es el mismo que el anterior. Está escrito usando SetWindowHook. Si lo miras, entenderás que es muy simple. p>

En cuanto a qué hacer después de la interceptación, es asunto suyo. Por ejemplo, en cada El mensaje del temporizador procesa algunos de nuestros juicios de datos, o simula un temporizador en el temporizador, luego algunos datos se procesarán dos veces, jaja. , las consecuencias no son necesariamente algo bueno, jaja, pero si el cálculo de los datos es realmente puedes cambiar los datos en el juego del cliente, jaja, pruébalo. Hay muchos otros usos, puedes pensar en ellos tú mismo, ¡jaja! !

3 Intercepción de paquetes de socket

Esta tecnología

es mucho más difícil que la original, por lo que debes estar preparado mentalmente.

Primero necesitamos reemplazar winSock.dll o winsock32.dll. La función de reemplazo que escribimos debe ser la misma que La función original debe ser consistente, es decir, qué tipo de función genera su función, también necesitamos. genere qué tipo de función, y los parámetros y el orden de los parámetros deben ser los mismos, y luego llame al winSock32.dll real en nuestra función. La función es suficiente

En primer lugar: podemos reemplazar la biblioteca dinámica en el sistema. path

En segundo lugar: cuando se inicia nuestra aplicación, podemos cargar la biblioteca dinámica original, use 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 la procesará desde nuestra biblioteca dinámica. Una vez completado, saltará a la dirección de función de la biblioteca dinámica real, para que podamos procesamos nuestros propios datos en él, que deberían ser todos datos ¡Jaja!

Emocionados, tenemos que analizar los paquetes de datos interceptados. Solo entonces se puede dar la respuesta correcta. No creas que el trabajo está completo. así, jaja! Aún es temprano una vez completado el análisis, todavía necesitamos simular el mecanismo de respuesta para comunicarnos con el servidor. Si no tienes cuidado, tu cuenta será prohibida. ~~¡Me han bloqueado mucho!

El análisis de datos es la fuente de la carga de trabajo. El método de cifrado puede cambiar cada vez que se actualiza el juego, por lo que aquellos de nosotros que escribimos complementos somos un desesperado. , y se está entreteniendo sin saberlo, jaja (Descargo de responsabilidad: no estoy ganando dinero, lo hago gratis)

Bien, para darte un buen punto de partida, ¡aquí tienes un completo! reemplazo del código fuente del socket, ¡jaja!

/vchelp/zsrc/wsock32_sub.zip

4 API de intercepción

Si la tecnología anterior se puede utilizar de manera flexible, no No es necesario interceptar la función API; de hecho, esta tecnología es una tecnología complementaria. Por ejemplo, si necesitamos interceptar funciones distintas al socket para nuestros propósitos, usaremos esta tecnología. para interceptar directamente funciones en el socket, por lo que es más directo.

Ahora hay tutoriales para interceptar API en todas partes, así que no lo haré.

En la lista, el método al que estoy más acostumbrado es interceptar de acuerdo con la sección de entrada. Este método se puede usar en cualquier sistema operativo, como 98/2000, etc. Algunos métodos no son multiplataforma y no recomiendo su uso. Puede consultar el contenido que comienza en la página 545 de Programación principal de Windows para aprender. Si es un sistema 98, puede usar el último capítulo de Misterios del sistema de Windows para aprender.

Hay tantos. muchos buenos métodos, veamos qué hacen ustedes. Lo he usado y no hablaré de otras técnicas específicas aquí, de lo contrario alguien me matará, ¡jaja!

Recuerden que los métodos de modificación de cada juego son diferentes, si el procesamiento de datos de un determinado Juego está todo en el lado del servidor, entonces será mejor que no escribas un complemento, jaja, como máximo, escribe un complemento que funcione automáticamente, ¡jaja!

Todos deben prestar atención al analizar datos y no intentar interactuar fácilmente con la conexión del servidor, porque es muy peligroso, así que tenga cuidado. Una vez que haya dominado una gran cantidad de resultados de análisis de datos y tenga más confianza, ¡inténtelo! Pruébelo y vea si tiene suerte, es muy probable que tenga éxito, ¡jaja!

De hecho, el programa que simula el cliente como el que también le encanta a Wangjin también es muy adecuado. para la gente en la oficina. Depende del posicionamiento del producto de cada uno.

No lo diré más, todos trabajarán duro. ¡No nos dejemos reclutar por los fabricantes de juegos, será perjudicial!