No estoy familiarizado con la magia del compilador. El acto de transformar el código legible para el ser humano (o las instrucciones de ensamblado realmente legibles) en código máquina es, para mí, ciencia de cohetes combinada con hechicería.¿Cómo leer/escribir el código de máquina .exe manualmente?
Voy a limitar el tema de esta pregunta a los ejecutables de Win32 (.exe). Cuando abro estos archivos en un visor especializado, puedo encontrar cadenas (generalmente 16b por carácter) diseminadas en varios lugares, pero el resto es basura. Supongo que la parte ilegible (mayoría) es el código de máquina (o tal vez recursos, como imágenes, etc.).
¿Hay alguna forma directa de leer el código de máquina? Al abrir el exe como una secuencia de archivos y leerlo byte por byte, ¿cómo podría uno convertir estos bytes individuales en Assembly? ¿Existe un mapeo directo entre estos bytes de instrucción y las instrucciones de montaje?
¿Cómo se escribe .exe? Cuatro bytes por instrucción? ¿Más? ¿Menos? Me he dado cuenta de que algunas aplicaciones pueden crear archivos ejecutables así: por ejemplo, en ACD Vea que puede exportar una serie de imágenes a una presentación de diapositivas. Pero esto no necesariamente tiene que ser una presentación de diapositivas SWF, ACD See también es capaz de producir presentaciones ejecutables EXE. ¿Cómo se hace eso?
¿Cómo puedo entender qué ocurre dentro de un archivo EXE?
El truco de ACDSee utilizará un programa precompilado y editará sus recursos. Consulte http://www.silurian.com/win32/peformat.htm y juegue con Process Explorer (http://live.sysinternals.com/procexp.exe) – Mark
Gracias, eso se ve bien. Y Process Explorer impresionante. Comencé a usarlo hace un par de meses, y es simplemente increíble. Cada vez que lo ejecuto, no puedo dejar de preguntarme ¿CÓMO PUEDEN ...? –
Sólo un comentario retrasado aquí; ¿cómo te las arreglas para seguir adelante con eso al final? ¿Lograste llegar muy lejos? – dreamlax