¿Qué es la inyección de código en Windows?
La inyección de código es común en Windows. Las aplicaciones "inyectan" partes de su propio código en otro proceso en ejecución para modificar su comportamiento. Esta técnica se puede utilizar para bien o para mal, pero de cualquier manera puede causar problemas.
La inyección de código también suele denominarse inyección de DLL porque el código inyectado a menudo tiene la forma de un archivo DLL (biblioteca de enlace dinámico). Sin embargo, las aplicaciones también pueden inyectar otros tipos de código que no son DLL en un proceso.
Para qué se usa la inyección de código
La inyección de código se utiliza para realizar todo tipo de trucos y funciones en Windows. Mientras que los programas legítimos lo usan, también lo usa el malware. Por ejemplo:
- Los programas antivirus a menudo inyectan código en los navegadores web. Pueden usarlo para monitorear el tráfico de la red y bloquear contenido web peligroso, por ejemplo.
- Los programas malintencionados pueden agregar código a su navegador web para rastrear mejor su navegación, robar información protegida como contraseñas y números de tarjetas de crédito, y cambiar la configuración de su navegador.
- Los WindowBlinds de Stardock, que son temas de su escritorio, inyectan código para modificar cómo se dibujan las ventanas.
- Stardock's Fences inyecta código para cambiar la forma en que funciona el escritorio de Windows.
- AutoHotkey, que le permite crear scripts y asignarles teclas de acceso rápido en todo el sistema, inyecta un código para lograr esto.
- Controladores de gráficos como los archivos DLL de inyección de NVIDIA para realizar una variedad de tareas relacionadas con gráficos.
- Algunos programas inyectan DLL para agregar opciones de menú adicionales a una aplicación.
- Las herramientas de engaño de juegos de PC a menudo inyectan código en los juegos para modificar su comportamiento y obtener una ventaja injusta sobre otros jugadores.
¿Es mala la inyección de código??
Esta técnica es utilizada constantemente por una amplia variedad de aplicaciones en Windows. Es la única forma real de realizar una variedad de tareas. Comparado con una plataforma móvil moderna como iOS de Apple o Android de Google, el escritorio de Windows es tan poderoso porque ofrece este tipo de flexibilidad a los desarrolladores..
Por supuesto, con todo ese poder viene un cierto peligro. La inyección de código puede causar problemas y errores en las aplicaciones. Google dice que los usuarios de Windows que tienen código inyectado en su navegador Chrome tienen un 15% más de probabilidades de sufrir bloqueos de Chrome, razón por la cual Google está trabajando para bloquear esto. Microsoft señala que las aplicaciones maliciosas podrían utilizar la inyección de código para alterar la configuración del navegador, lo cual es una de las razones por las que ya está bloqueado en Edge.
Microsoft incluso proporciona instrucciones para verificar si las DLL de terceros se cargan en Microsoft Outlook, ya que causan tantos bloqueos de Outlook.
Como empleado de Microsoft, póngalo en un blog de desarrolladores de 2004:
La inyección de DLL nunca es segura. Está hablando de introducir código en un proceso que nunca fue diseñado, creado o probado por el autor del proceso, y cooptar o crear un subproceso para ejecutar ese código. Corres el riesgo de crear problemas de tiempo, sincronización o recursos que no existían antes o exacerbar los problemas que existían.
En otras palabras, la inyección de código es una especie de truco sucio. En un mundo ideal, habría una manera más segura de lograr esto que no causara inestabilidad potencial. Sin embargo, la inyección de código es solo una parte normal de la plataforma de aplicaciones de Windows en la actualidad. Está sucediendo constantemente en el fondo en tu PC con Windows. Podrías llamarlo un mal necesario..
Cómo comprobar si hay DLL inyectados
Puede verificar la inyección de código en su sistema con la potente aplicación Process Explorer de Microsoft. Es básicamente una versión avanzada del Administrador de tareas con características adicionales.
Descargue y ejecute Process Explorer si desea hacer esto. Haga clic en Ver> Vista del panel inferior> DLL o presione Ctrl + D.
Seleccione un proceso en el panel superior y busque en el panel inferior para ver los archivos DLL que están cargados. La columna "Nombre de la compañía" proporciona una forma útil de filtrar esta lista.
Por ejemplo, es normal ver una variedad de archivos DLL creados por "Microsoft Corporation" aquí, ya que son parte de Windows. También es normal ver los archivos DLL creados por la misma compañía que el proceso en cuestión: "Google Inc." en el caso de Chrome en la siguiente captura de pantalla.
También podemos detectar algunos archivos DLL creados por el "Software AVAST" aquí. Esto indica que el software antimalware Avast en nuestro sistema está inyectando código como la "biblioteca de filtros de bloqueo de secuencias de comandos de Avast" en Chrome.
No hay mucho que pueda hacer si encuentra la inyección de código en su sistema, además de desinstalar el código de inyección del programa para evitar que cause problemas. Por ejemplo, si Chrome se bloquea regularmente, es posible que desee ver si hay algún programa que inyecte código en Chrome y desinstálelos para evitar que manipulen los procesos de Chrome..
¿Cómo funciona la inyección de código?
La inyección de código no modifica la aplicación subyacente en su disco. En su lugar, espera a que la aplicación se ejecute e inyecta código adicional en ese proceso en ejecución para cambiar la forma en que funciona..
Windows incluye una variedad de interfaces de programación de aplicaciones (API) que se pueden usar para la inyección de código. Un proceso puede adjuntarse a un proceso objetivo, asignar memoria, escribir una DLL u otro código en esa memoria, y luego instruir al proceso objetivo para que ejecute el código. Windows no evita que los procesos en su computadora interfieran entre sí de esta manera.
Para obtener más información técnica, consulte esta publicación del blog que explica cómo los desarrolladores pueden inyectar DLL y este aspecto de otros tipos de inyección de código en Windows.
En algunos casos, alguien puede cambiar el código subyacente en el disco, por ejemplo, al reemplazar un archivo DLL que viene con un juego de PC con uno modificado para habilitar el engaño o la piratería. Esto técnicamente no es una "inyección de código". El código no se está inyectando en un proceso en ejecución, sino que el programa está siendo engañado para que cargue una DLL diferente con el mismo nombre.
Crédito de la imagen: Lukatme / Shutterstock.com.