2010-09-29 34 views
15

Estaba navegando en Internet últimamente, cuando me encontré con Dll Injection.Inyección Dll - ¿Qué es posible con eso?

Creo que es un tema interesante, pero no tengo idea de cuál es su propósito.

He leído que se puede utilizar para juegos y software de cracking/hacking, pero ¿también es posible hacer algo positivo con él?

Si es así, ¿para qué se puede utilizar?

¿Y qué idiomas soportan esto?

Para el registro, no voy a intentar Crack/hackear cualquier juego con el conocimiento adquirido, no hay intención de hacer algo ilegal!

Gracias por el tiempo,

emerion

ps: Sitios Web/libros que están sobre este tema serán bienvenidos!

Respuesta

18

Hay varios usos que vienen a la mente:

  • calientes parches: le permite actualizar/parches partes de su código sin tener que parar el proceso o reiniciar. Microsoft mismo se aseguró de que grandes partes de Windows se conectan en caliente al prefijar funciones con un bloque NOP de 5 bytes. ¿Por qué? Porque puede JMP a cualquier otra parte de su código en 5 bytes, por lo que el hot-patching básicamente sobrescribe los bytes de prefijo con un JMP al código actualizado/parcheado y listo, su código hace algo completamente nuevo. Esto se utiliza a menudo junto con la inyección de DLL para cargar el nuevo código en el proceso de destino, y si bien no es obligatorio, que es uno de sus usos

  • Logging: En el mismo espíritu, desviándose código se utiliza a menudo para prefijar una función para fines de registro, es decir, para ver con qué parámetros se llama. Además, algunas aplicaciones que registran la salida de pantalla de las aplicaciones de DirectX lo hacen al desviar las llamadas de DirectX, lo que implica inyectar una DLL en el proceso que monitorea las llamadas.

  • subclases: No en el sentido programación orientada a objetos, sino en el sentido de Windows, es decir, proporcionar un nuevo WndProc de una ventana existente para alterar su comportamiento.Si bien puede simplemente configurar una rutina de manejo de mensajes diferente a través de SetWindowLongPtr, el factor limitante a esto es que la función debe residir en el espacio de direcciones del proceso de destino. Aquí es donde entra la inyección una vez más: usted proporciona una nueva implementación en un archivo DLL, lo inyecta en el proceso objetivo y llama al SetWindowLongPtr. Esto se puede usar para proporcionar un dibujo personalizado adicional en una ventana extranjera, por ejemplo.

he tenido personalmente para hacer frente a todos los casos de uso anteriores en el pasado, en las aplicaciones de oficina regulares, el uso de parches caliente para asegurar la actividad en un sistema de notificación crítico en los servicios médicos a la utilización de desvíos/registro en permitir una gestión de registros patentada (por una tienda de software ya muerta) para hablar con una solución de CRM en tiempo real en tiempo real.

Como siempre, es solo una herramienta en su caja, y no hay nada intrínsecamente "malo" al respecto. es para cualquier propósito que haga uso de eso lo que cuenta.

3

En la programación informática, la inyección DLL es una técnica utilizada para ejecutar código dentro del espacio de direcciones de otro proceso por obligándolo a cargar una biblioteca de vínculos dinámicos. [1] La inyección DLL a menudo es utilizada por desarrolladores externos para influir en el comportamiento de un programa de una manera que sus autores no previeron ni intentaron. Por ejemplo, el código inyectado podría atrapar las llamadas a la función del sistema o leer el contenido de las cajas de texto de la contraseña, lo que no se puede hacer de la manera habitual.

Fuente y más información aquí: http://en.wikipedia.org/wiki/DLL_injection También puede encontrar algunas buenas referencias a fuentes externas.

Dll Injection se puede utilizar por una buena razón cuando tiene un sistema heredado sin código fuente y tiene que cambiar su comportamiento. Sin embargo, es un truco sucio y debe usarse como último recurso, IMO.

4

Hubo un muy buen proyecto en Microsoft Research sobre este tema, centrándose en la interceptación de llamadas a funciones de WinAPI mediante el uso de la inyección dll.

Este es el enlace, se debe mantener ocupado durante un tiempo: Detours

+1

desvíos es agradable, pero para un nuevo desarrollo se debe probablemente preferiría http://easyhook.codeplex.com/ lugar - permite x64, así como kernelmode hooking, y permite que los hooks se escriban como código administrado (!) – snemarch

+0

@snemarch - nice !! Sabía que Detours era viejo, pero no sabía que alguien hubiera mantenido el concepto en marcha, voy a disfrutar de jugarlo. – slugster

Cuestiones relacionadas