Foro de elhacker.net

Seguridad Informática => Análisis y Diseño de Malware => Mensaje iniciado por: Usuario887 en 31 Octubre 2021, 13:28 pm



Título: Enlazar dos ejecutables.
Publicado por: Usuario887 en 31 Octubre 2021, 13:28 pm
Hola,

Hay muchos sitios en Internet, especialmente en los foros de la MSDN y Stack Overflow, en donce se dice que esto "No es posible".

Esto es parcialmente cierto, porque yo lo hice, con dos Hello World haciendo merge a las secciones de codigo y datos y modificando las referencias a funciones y datos. Ahora, se que es muy poco practico hacer esto con un PE grande, estarias meses calculando referencias... Pero recuerdo que hace años en la biblioteca de underc0de habia un programa binder que lograba hacer esto. Recuerdo que lo hice con dos EXEs complejos y efectivamente se abrieron dos programas al ejecutar el programa resultante. Para ser honesto, no tengo idea de como este programa logro empaquetarlos a los dos de esa manera...

Ya no tengo el programa.

Vengo a preguntar si alguien tiene idea de como lo hizo.

Gracias.


Título: Re: Enlazar dos ejecutables.
Publicado por: **Aincrad** en 31 Octubre 2021, 14:01 pm
Que yo sepa, basicamente, funciona como un Packer. empaqueta los dos .exe, y los ejecuta a ambos. los extraeria en el disco y ejecutaria, o usar algun tipo de RunPE.

https://github.com/vpnguy-zz/ExeBinder (https://github.com/vpnguy-zz/ExeBinder)
 https://github.com/wireless90/File-Binder (https://github.com/wireless90/File-Binder)



(https://camo.githubusercontent.com/ab7146070036564d62ca7cf3cb83cc19b0b83a573d2554b4f167444f2138c53f/68747470733a2f2f736563726574736f66746865736f6c73746963652e66696c65732e776f726470726573732e636f6d2f323031352f30382f66696c655f62696e6465722e676966)



Título: Re: Enlazar dos ejecutables.
Publicado por: Usuario887 en 31 Octubre 2021, 14:17 pm
Como Iexpress.

Sin embargo, al pasarle argumentos al ejecutable no se puede decidir a que ejecutable de los dos empaquetados es el que los recibe ¿Verdad?



Bueno, creo que eso se puede arreglar modificando el codigo fuente.

Gracias.


Título: Re: Enlazar dos ejecutables.
Publicado por: **Aincrad** en 31 Octubre 2021, 14:54 pm
Como Iexpress.

Sin embargo, al pasarle argumentos al ejecutable no se puede decidir a que ejecutable de los dos empaquetados es el que los recibe ¿Verdad?



Bueno, creo que eso se puede arreglar modificando el codigo fuente.

Gracias.

Yeah, Puedes modificar la source , para que soporte argumentos.


Título: Re: Enlazar dos ejecutables.
Publicado por: Usuario887 en 31 Octubre 2021, 17:05 pm
La verdad es que le eche un vistazo y como no se C# no tengo idea de como hacerlo a priori pero me imagino que echandole un vistazo a alguna referencia sobre la sintaxis me las arreglare...

Parece una combinacion entre C++ y Java


Título: Re: Enlazar dos ejecutables.
Publicado por: Usuario887 en 31 Octubre 2021, 17:19 pm
¿Tienes idea de alguno similar que este escrito en C...?



Encontre uno en https://github.com/93aef0ce4dd141ece6f5/File-Binder (https://github.com/93aef0ce4dd141ece6f5/File-Binder)

Gracias por tu ayuda.


Título: Re: Enlazar dos ejecutables.
Publicado por: Danielㅤ en 31 Octubre 2021, 20:30 pm
Hola buenas tardes marax, mirá yo como programador lo que haría en cuanto a lo que estás necesitando es lo siguiente:

1. Crear un script en Python que cumpla la función de guardar en dos variables el contenido binario de los dos ejecutables:

Código
  1. exe1 = open("programa1.exe", "rb").read()
  2. exe2 = open("programa2.exe", "rb").read()
  3.  

2. Luego se va a convertir las variables exe1 y exe2 a codificación base64:

Código
  1. exeBase64_1 = base64.b64encode(bytes(exe1, 'utf-8'))
  2. exeBase64_2 = base64.b64encode(bytes(exe2, 'utf-8'))
  3.  

luego esa codificación se va a volcar/guardar en dos archivos de texto:

exeB64_1.txt
exeB64_2.txt

3. Ahora teniendo los dos ejecutables codificados en base64 y guardados en dos archivos de texto, se debe crear un código en Python, luego pasar ese código a ejecutable y el mismo será el exe único, es decir el que el usuario ejecutará para que éste ejecute los otros dos ejecutables.

4. En este exe principal lo que se haría obviamente cuando sea un código antes de pasarlo a exe, es guardar en dos variables los contenidos codificados en base64 de los dos exe:

Código
  1. exeBase64_1 = open("exeB64_1.txt", "r").read()
  2. exeBase64_2 = open("exeB64_2.txt", "r").read()
  3.  

5. El proceso que tendría que hacer el ejecutable principal cuando sea ejecutado sería el siguiente:

A) Crear en el directorio de archivos temporales del sistema los dos ejecutables, simplemente habría que crear por ejemplo programa1.exe y programa2.exe y el contenido de éstos programas sería el valor de las variables exeBase64_1 y exeBase64_2 pero decodificadas a binario, sería el proceso inverso del que se realizó al comienzo.

B) Como ya están creados los dos ejecutable solamente hay que hacer que el exe principal los ejecute luego de crearlos, aquí varias formas:

Código
  1. os.system()
  2. os.popen()
  3. subprocess.Popen()

Eso es todo!


Saludos


Título: Re: Enlazar dos ejecutables.
Publicado por: Usuario887 en 1 Noviembre 2021, 17:52 pm
Buenas noches Daniel

Gracias por tomarte el tiempo para tu respuesta.

Es una buena idea el cifrado  ;D

Sin embargo no queria tener que depender de un interprete... Mi intencion en realidad era unir las secciones de los ejecutables a nivel de encabezado y contenido PE. Igual ya me di cuenta de que esto no es tan practico.

Igual me sigo imaginando la forma  :xD :xD

Saludos.