Resultados 1 al 2 de 2

Estructura EXE

  1. #1 Estructura EXE 
    Medio
    Fecha de ingreso
    Sep 2008
    Mensajes
    134
    Descargas
    0
    Uploads
    0
    Hola chicos.

    Quería saber cómo está administrada la estructura de los EXE. Estuve viendo en distintas webs que dispone de unos cuantos campos (para los ejecutables de DOS) en la cabecera, como los bytes MZ, etc. El caso es que volqué el hexadecimal de un ejecutable sencillito y veía en la cabecera unos cuantos valores que corresponderían a cada campo de la cabecera, pero luego habían un monton de bytes con valor 0 y más abajo empezaba el código en hexadecimal de la aplicación.

    ¿Por qué hay un bloque de memoria con tantos 0? ¿Siempre es la misma cantidad de 0?

    Si encontrais algún material sobre la explicación del volcado hexadecimal de los EXE, pasadme el enlace.
    Gracias, un saludo!
    Citar  
     

  2. #2  
    Moderador Global Avatar de hystd
    Fecha de ingreso
    Jul 2005
    Ubicación
    1, 11, 21, 1211...
    Mensajes
    1.596
    Descargas
    58
    Uploads
    0
    Busca por "Formato PE"... resolverá tus dudas.

    Antes de nada hay que diferenciar entre ficheros .COM y .EXE...

    Los ficheros .com son una imagen del código en memoria escrita en un fichero en disco... a modo de ejemplo, un programita que creara un .COM de un proceso ya cargado en memoria (completamente y no por segmentos) podría ser leyendo esa porción de memoria que tiene asignada el proceso en cuestión:

    1º Leer de la memoria... usando la función de la API: ReadProcessMemory()
    2º Escribir en un buffer de datos (un array de bytes) el código leído (el código una vez asignado a cada elemento del array buffer, pasará a ser "datos".
    3º Crear un fichero en disco y volcar la información del buffer. Por ejemplo mediante funciones para el manejo de ficheros (según el compilador podría ser: fprintf, write, etc...) o bien usando la API de Windows directamente, funciones como: CreateFile, WriteFile, etc...
    4º Añadir al principio del fichero la cabecera DOS MZ, propia de los ficheros .COM, sabiendo la longitud de los datos escritos...

    Jejeje, no viene a cuento esto de hacer un programita, pero mientras respondía el post, se me ocurrió la idea... si quieres y te interesa, puedes intentar programartelo.

    Por el contrario, los .exe son ficheros que poseen el código con direcciones reubicables y no reubicables, es decir, el fichero .exe posee el código suponiendo que se ejecutará a partir de una determinada dirección, y una lista de elementos que son reubicables. Cuando el programa (.exe) se cargue en memoria (sea ejecutado por el SO), el sistema operativo realiza la reubicación de los elementos necesarios "sumando" una dirección base indicada por la cabecera PE.

    Esto es así, por varios motivos:

    1º Se consigue portabilidad de ese programa entre distintas versiones de ese sistema operativo. (Sólo sería necesario que el SO cambiase la dirección base), y no sería necesario tener que recompilar el programa para el nuevo sistema operativo.

    2º Se consigue una forma de protección ya que el código del .exe nunca será asignado a una zona de memoria donde se encuentre ejecutando código del sistema operativo.

    Pero también presenta algunos inconvenientes... como por ejemplo, que una vez cargado el proceso en memoria no hay información suficiente para poder ser asignado o cambiar a otro segmento de ésta, y sería necesario tener que leer la dirección base de la cabecera PE... por lo que disminuye el aprovechamiento y la eficiencia de uso de la memoria.


    Un saludo.
    El optimista tiene ideas, el pesimista... excusas

    Citar  
     

Temas similares

  1. Respuestas: 1
    Último mensaje: 23-11-2012, 09:09
  2. error strcmp y estructura
    Por webclon2000 en el foro PROGRAMACION DESKTOP
    Respuestas: 3
    Último mensaje: 24-02-2010, 17:54
  3. Estructura pila
    Por valeronfor en el foro WINDOWS
    Respuestas: 0
    Último mensaje: 16-11-2006, 04:24
  4. Funciones y estructura de un spider
    Por thebosz en el foro GENERAL
    Respuestas: 10
    Último mensaje: 03-10-2004, 19:43
  5. Estructura de puntero por parametro...
    Por Dwarft en el foro GENERAL
    Respuestas: 9
    Último mensaje: 16-07-2004, 18:49

Marcadores

Marcadores