para hacer ejecutables ejecutable crear con como archivos archivo windows compiler-construction linker executable portable-executable

windows - hacer - ¿Cómo puedo crear un archivo ejecutable.exe PE manualmente?



crear un exe en windows 7 (6)

¡Buena pregunta! No tengo mucha experiencia en esta pregunta específica, pero así es como empezaría:

  1. PE o ELF no crea código de máquina puro. También contiene información de encabezado, etc. Más información: escritura de datos personalizados en archivos ejecutables en Windows y Linux

  2. Supongo que está buscando cómo el archivo ELF / PE contiene el código de la máquina, puede obtenerlo de esta pregunta (usando objdump): ¿Cómo extrae solo el contenido de una sección ELF?

  3. Ahora, si desea saber cómo se genera la parte del contenido en primer lugar, es decir, cómo se genera el código de la máquina, entonces esa es la tarea de la generación del código del compilador .

  4. Pruebe algún editor de recursos como ResourceEditor para comprender el exe o simplemente ildasm .

PS: En su mayoría son soluciones de Unix, pero estoy seguro de que PE debería estar haciendo algo fundamentalmente similar.

Creo que la mejor manera de abordarlo será en primer lugar analizar cómo funcionan los PE / ELF existentes, básicamente la ingeniería inversa. Y para hacer eso, la máquina Unix será un buen punto para comenzar. Y luego haz tu magia :)

No es lo mismo sino una pregunta similar here .

Actualizar:

Generé un volcado de objetos a partir de un código c de muestra. Ahora, asumo que eso es lo que te diriges, ¿verdad? ¿Necesita saber si genera este archivo (a.out)?

https://gist.github.com/1329947

Echa un vistazo a esta imagen, una vida útil de código de CA.

Source Ahora, para que quede claro, ¿está buscando implementar el paso final, es decir, la conversión del código objeto al código ejecutable?

Todos los textos sobre cómo crear un compilador se detienen después de explicar los lexers y los analizadores. No explican cómo crear el código de máquina. Quiero entender el proceso de extremo a extremo.

Actualmente, lo que entiendo es que los formatos de archivo exe de Windows se denominan ejecutables portátiles. Leí sobre los encabezados que tiene y todavía tengo que encontrar un recurso que lo explique fácilmente.

Mi siguiente problema es que no veo ningún recurso que explique cómo se almacena el código de máquina en el archivo. ¿Son como instrucciones de longitud fija de 32 bits almacenadas una tras otra en la sección .text ?

¿Hay algún lugar que al menos explique cómo crear un archivo exe que no haga nada (tiene una instrucción No Op)? Mi siguiente paso sería vincular a los archivos dll para imprimir en la consola.


Alguna información sobre cómo hacer que los archivos de PE sean lo más pequeños posible: Tiny PE .

La forma minimalista de alterar la generación de código, si solo está intentando probar algunas cosas simples, es generar archivos .COM de MS-DOS , que no tienen encabezado ni metadatos. Lamentablemente, estarías restringido a un código de 16 bits. Este formato es todavía bastante popular para demostraciones .

En cuanto al formato de instrucciones, de lo que recuerdo el conjunto de instrucciones x86 es de longitud variable, incluidas las instrucciones de 1 byte. Las CPU RISC probablemente tendrían instrucciones de longitud fija.



Iv''e usó el "Formato de archivo de Wotsit" durante años ... hasta los días de MS-Dos :-) y cuando era solo una colección de archivos de texto que podía descargar de la mayoría de los sistemas de BBS llamados "The Programadores de juegos tipo enciclopedias "

Ahora es propiedad de las personas que administran Gamedev.Net y, probablemente, uno de los secretos mejor guardados de Internet.

Encontrará el formato EXE en esta página: http://www.wotsit.org/list.asp?fc=5

Disfrutar.


No es sorprendente que los mejores sitios para obtener información sobre cómo escribir archivos en formato PE se refieren a la creación de virus.

Una búsqueda de VX Heavens para "PE" ofrece una gran cantidad de tutoriales para modificar archivos de PE