lunes, 28 de febrero de 2011

Añadir código “portable” a un ejecutable 1/2

En anteriores episodios… Añadimos una sección a mano al notepad (lo subo por aquí). Se cambió el EntryPoint para apuntar a la nueva sección. En esa sección incluimos código para mostrar un mensaje usando la dirección hardcoded de MessageBoxA. Y por último se saltaba al EntryPoint Original del programa para que continuase su ejecución normal.

noportable

El problema como comenté es que la dirección de MessageBoxA, en mi caso 76F0FEAE, cambia dependiendo de versiones de Windows, ServicePack instalados, actualizaciones… Así que nuestro nuevo ejecutable “infectado” no sería muy portable.

La solución pasa por entender como Windows hace que un ejecutable se ejecute correctamente en distintas versiones de Windows. Para ello el cargador cuando se quiere ejecutar un programa entre otras cosas localiza la tabla de importaciones que contiene todas aquellas funciones que utiliza el ejecutable y rellena una estructura conocida como Import Address Table, IAT, con las direcciones de esas funciones en la versión actual de Windows.

Para entender todo esto bien, y ya de paso algo sobre como aprovechan esto los virus, recomiendo leerse este PDF Infección de ejecutables de iZan.

Continuará...continuó.

3 comentarios:

  1. Te leo por RSS muy buenos post :),Saludos!

    ResponderEliminar
  2. Hola Thor, el enlace al documento de añadir una sección al notepad está caído.

    Podrías volver a subirlo.

    Gracias.

    ResponderEliminar
  3. Vaya, pues parece que también está caído el enlace de Infección de ejecutables de iZan.

    Un saludo.

    ResponderEliminar