Hola,
Respecto a lo de agregar un ejecutable dentro de otro, si bien miraste el material y leíste un poco de teoría sabrás que la información de referencia para el lanzador, cargador de Windows se encuentra en la cabecera así que si vas a hacer eso se debe copiar todo el ejecutable. Que lo metas en una sola sección sería lo "ideal" puesto que tu necesitas la información para hacer una ejecución "casera". Luego tienes unas dependencias de que tu mismo le tienes que dar espacio en memoria, un thread, etc.
Es aquí donde se presentan los problemas, porque además de eso debes resolver las importaciones y relocaciones.
Generalmente muchos ejecutables traen un ImageBase similar a 0x400000 y la única forma de cambiar estos campos sería teniendo una tabla .reloc en tu exe y no todos lo tienen.
Como ves que complica un poco la cosa, cualquier cosa preguntas y con gusto.
En cuanto a las secciones, son muchísimas y la mejor explicación está en el PE COFF de Microsoft, pero entonces te digo las más conocidas:
Y esos son los que momentáneamente recuerdo.
Saludos.
Respecto a lo de agregar un ejecutable dentro de otro, si bien miraste el material y leíste un poco de teoría sabrás que la información de referencia para el lanzador, cargador de Windows se encuentra en la cabecera así que si vas a hacer eso se debe copiar todo el ejecutable. Que lo metas en una sola sección sería lo "ideal" puesto que tu necesitas la información para hacer una ejecución "casera". Luego tienes unas dependencias de que tu mismo le tienes que dar espacio en memoria, un thread, etc.
Es aquí donde se presentan los problemas, porque además de eso debes resolver las importaciones y relocaciones.
Generalmente muchos ejecutables traen un ImageBase similar a 0x400000 y la única forma de cambiar estos campos sería teniendo una tabla .reloc en tu exe y no todos lo tienen.
Como ves que complica un poco la cosa, cualquier cosa preguntas y con gusto.
En cuanto a las secciones, son muchísimas y la mejor explicación está en el PE COFF de Microsoft, pero entonces te digo las más conocidas:
- .text -> Sección de código ejecutable
- .code -> Sección de código ejecutable
- .data -> Sección de datos (variables)
- .idata -> Sección de importación de librerías (import data)
- .rdata -> Igual que la anterior
- .rsrc -> Sección de recursos.
- .reloc -> Sección de relocaciones.
- .debug -> Sección con datos para la depuración
Y esos son los que momentáneamente recuerdo.
Saludos.