¿Qué es la inyección de código en Windows?

La inyección de código es común en Windows. Las aplicaciones «inyectan» fragmentos de su propio código en otro proceso en ejecución para modificar su comportamiento. Esta técnica se puede usar para bien o para mal, pero de cualquier manera puede causar problemas.

La inyección de código también se denomina comúnmente inyección de DLL porque el código inyectado suele tener la forma de un  archivo DLL (biblioteca de vínculos dinámicos) . Sin embargo, las aplicaciones también podrían inyectar otros tipos de código que no sean DLL en un proceso.

Para qué se utiliza la inyección de código

La inyección de código se utiliza para realizar todo tipo de trucos y funciones en Windows. Si bien 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 maliciosos 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.
  • WindowBlinds de Stardock, que temas su escritorio, inyecta código para modificar cómo se dibujan las ventanas .
  • Fences de Stardock 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 código para lograr esto.
  • Los controladores de gráficos como los de NVIDIA inyectan DLL para realizar una variedad de tareas relacionadas con los gráficos.
  • Algunos programas inyectan archivos DLL para agregar opciones de menú adicionales a una aplicación.
  • Las herramientas de trampa de juegos de PC a menudo inyectan código en los juegos para modificar su comportamiento y obtener una ventaja injusta sobre otros jugadores.
Relacionado:  Por qué debería reemplazar el visor de imágenes predeterminado de Windows con IrfanView

¿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, todo ese poder conlleva 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 experimentar fallas de Chrome, razón por la cual Google está trabajando para bloquear esto. Microsoft señala que las aplicaciones maliciosas podrían usar la inyección de código para alterar la configuración del navegador, que es una de las razones por las que ya está bloqueado en Edge.

Microsoft incluso proporciona instrucciones para verificar si las DLL de terceros están cargadas en Microsoft Outlook, ya que provocan muchos bloqueos de Outlook.

Como lo puso un empleado de Microsoft en un blog de desarrolladores de 2004:

La inyección de DLL nunca es segura. Estás hablando de introducir código en un proceso que nunca fue diseñado, construido o probado por el autor del proceso, y cooptar o crear un hilo para ejecutar ese código. Corre el riesgo de crear problemas de tiempo, sincronización o recursos que no existían antes o agravar los problemas que estaban allí.

En otras palabras, la inyección de código es una especie de truco sucio. En un mundo ideal, habría una forma 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 segundo plano en su PC con Windows. Podrías llamarlo un mal necesario.

Relacionado:  ¿Qué hacen realmente las configuraciones de telemetría básica y completa de Windows 10?

Cómo comprobar si hay archivos DLL inyectados

Puede comprobar 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 las DLL que están cargadas. La columna «Nombre de la empresa» 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 archivos DLL creados por la misma empresa que el proceso en cuestión: «Google Inc.» en el caso de Chrome en la captura de pantalla a continuación.

También podemos ver algunas DLL creadas por “Software AVAST” aquí. Esto indica que el software antimalware Avast de nuestro sistema está inyectando código como la “biblioteca de filtros de bloqueo de scripts de Avast” en Chrome.

No hay mucho que pueda hacer si encuentra la inyección de código en su sistema, aparte de desinstalar el programa que inyecta código para evitar que cause problemas. Por ejemplo, si Chrome se bloquea con regularidad, es posible que desee ver si hay programas que inyectan código en Chrome y desinstalarlos para evitar que alteren 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 cambio, espera a que se ejecute esa aplicación e inyecta código adicional en ese proceso en ejecución para cambiar su funcionamiento.

Relacionado:  Cómo permitir ping (solicitudes de eco ICMP) a través de su firewall de Windows

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 de destino, asignar memoria, escribir una DLL u otro código en esa memoria y luego instruir al proceso de destino 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 de blog que explica cómo los desarrolladores pueden inyectar archivos DLL  y este vistazo a  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, reemplazando un archivo DLL que viene con un juego de PC por uno modificado para permitir trampas o piratería. Esto técnicamente no es una «inyección de código». El código no se inyecta en un proceso en ejecución, sino que se engaña al programa para que cargue una DLL diferente con el mismo nombre.

Haber de imagen:  Lukatme /Shutterstock.com.