Entonces un archivo .exe es un archivo que puede ser ejecutado por Windows, pero ¿qué contiene exactamente? Lenguaje ensamblador que es específico del procesador? ¿O algún tipo de declaración intermedia reconocida por Windows que la convierte en ensamblado para un procesador específico? ¿Qué hace Windows exactamente con el archivo cuando lo "ejecuta"?¿Qué hay en un archivo .exe?
Respuesta
MSDN tiene un artículo "An In-Depth Look into the Win32 Portable Executable File Format" que describe la estructura de un archivo ejecutable.
Básicamente, un .exe contiene varios blobs de datos e instrucciones sobre cómo deben cargarse en la memoria. Algunas de estas secciones contienen código de máquina que se puede ejecutar (otras secciones contienen datos del programa, recursos, información de reubicación, información de importación, etc.)
Le sugiero que obtenga una copia de Windows Internals para obtener una descripción completa de lo que sucede cuando ejecutas un exe
Para un archivo ejecutable nativo, el código de máquina es específico de la plataforma. El encabezado .exe indica para qué plataforma es el .exe.
Cuando se ejecuta un nativo .exe ocurre lo siguiente (groseramente simplificada):
- Un objeto de proceso se crea.
- El archivo exe se lee en la memoria de ese proceso. Las diferentes secciones del .exe (código, datos, etc.) se asignan por separado y se les otorgan permisos diferentes (el código se ejecuta, los datos son de lectura/escritura, las constantes son de solo lectura).
- Las reubicaciones ocurren en el .exe (las direcciones se parchan si el .exe no se cargó en su dirección preferida).
- Se carga la tabla de importación y se cargan las DLL dependientes.
- Las DLL se asignan en un método similar al de .exe, con las reubicaciones ocurriendo y sus DLL dependientes siendo cargadas. Se resuelven las funciones importadas de las DLL.
- El proceso inicia la ejecución en un stub inicial en NTDLL.
- El apéndice del cargador inicial ejecuta los puntos de entrada para cada DLL, y luego salta al punto de entrada del archivo .exe.
Los archivos ejecutables administrados contienen MSIL (Microsoft Intermediate Language) y se pueden compilar para que puedan apuntar a cualquier CPU compatible con CLR. No estoy tan familiarizado con el funcionamiento interno del cargador CLR (qué código nativo se ejecuta inicialmente para arrancar el CLR y comenzar a interpretar el MSIL); quizás alguien más pueda dar más detalles al respecto.
1's y 0's!
This wikipedia link le dará toda la información que necesita en el formato ejecutable portátil utilizado para las aplicaciones de Windows.
Estaba a punto de rechazarte por una respuesta fatua hasta que vi que "Esto" era en realidad un enlace, no una referencia a "1 y 0". Espero que no te importe si lo edito para hacerlo un poco más claro – paxdiablo
En mi día no teníamos 1s que teníamos que conformar con 0s –
Puedo decirle lo que contienen los primeros dos bytes en archivos .exe - 'MZ'. me refiero a los personajes 'MZ'.
En realidad representa: Mark Zbikowski. El tipo que diseñó el formato de archivo exe.
Lindo e intrigante (Definitivamente seguiré ese enlace), pero no terriblemente relevante para la pregunta que nos ocupa. – Twisol
Sí, aunque es un fragmento interesante, solo explica los primeros dos bytes de un archivo PE. Eso no es mucho, en porcentaje. – paxdiablo
Solo por curiosidad: ¿lo diseñó para Microsoft? – MasterMastic
archivo de un archivo EXE es realmente un tipo de archivo conocido como Ejecutable portátil. Contiene datos binarios, que el procesador puede leer y ejecutar (básicamente instrucciones x86.) También hay un lote de datos de encabezado y otro contenido misceláneo. El código ejecutable real se encuentra en una sección llamada .text
, y se almacena como instrucciones de la máquina (específica del procesador). Este código (así como otras partes del .EXE) se almacenan en la memoria y se envía a la CPU, donde comienza a ejecutarse. (Tenga en cuenta que en realidad hay muchas más interfaces, esta es una explicación simplificada).
- 1. ¿Por qué es un archivo ensamblador .exe?
- 2. ¿Cómo crear un archivo .exe en netbeans?
- 3. Cómo crear un archivo exe en java
- 4. ¿Cómo puedo convertir un archivo JAR en un archivo EXE?
- 5. una descripción en un exe qt archivo
- 6. Incruste un archivo en el archivo EXE en VB6
- 7. Firmando un archivo EXE de Windows
- 8. archivo EXE Insertar en el archivo Excel
- 9. Cómo crear un archivo .exe ejecutable desde el archivo .m
- 10. Haga clic en un botón -> Ejecutar un archivo * .exe
- 11. Compilación del archivo .hta en .exe
- 12. ¿Qué hace collect2.exe?
- 13. Copie un archivo no exe en una máquina remota
- 14. ¿Cómo fusiona un archivo .ico con el archivo compilado .exe?
- 15. Insertar una aplicación (archivo exe) en otro archivo exe (mozEmbed like)
- 16. Cómo incrustar un conjunto satélite en el archivo EXE
- 17. .NET: incrustar un archivo EXE en mi proyecto
- 18. ¿Cómo encontrar si un archivo es un exe?
- 19. Ejecutar un archivo EXE utilizando un script de PowerShell
- 20. Ejecutar archivo .exe en Java desde la ubicación del archivo
- 21. Comprueba si se está ejecutando un archivo exe específico
- 22. C# Obtener el icono predeterminado de un archivo exe
- 23. Cómo almacenar archivos en un EXE
- 24. ¿Cómo creo un archivo .lib y un archivo .exe en Visual C++?
- 25. ¿Cómo agrego un archivo TXT a un recurso en mi archivo EXE?
- 26. ¿Por qué construir el mismo proyecto genera un archivo EXE diferente para cada desarrollador?
- 27. Integrado a * .exe en un dll
- 28. Varios servicios de Windows en un exe
- 29. Obtener la versión de archivo de un dll o exe
- 30. .Net aplicación completa como un archivo .exe solo?
¡Maldita sea, pásame! :) –