Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: ApOkAlizE en 22 Diciembre 2011, 14:23 pm



Título: Extraer PE i pegarlo en otro fichero ¡ayuda!
Publicado por: ApOkAlizE en 22 Diciembre 2011, 14:23 pm
Bueno pues estoy comenzando C++ desde hace unos meses y como antes usava VB pues no aprendi muy bien como funcionan las cosas. Pues ahora intento con C++ extraer el PE de un .exe que yo he creado y lo extrae bien, y mi idea es crear otro archivo con extension .exe también y ahí se le añade el codigo PE, pues aparentemente tienen ambos el mismo tamaño y tal, pero al ejecutar el nuevo archivo me sale el mensaje de "program too big to fit in memory", pero ambos archivos ocupan exactamente lo mismo (3.79MB), deberia poderse ejecutar también ¿no?
Gracias.


Título: Re: Extraer PE i pegarlo en otro fichero ¡ayuda!
Publicado por: Sagrini en 22 Diciembre 2011, 15:22 pm
Seguramente el problema es que no copias bien el PE del primer programa, pero es una suposición. Deberías poner tu código, ejemplos, la idea que tienes del problema... etc. Así no puedo ayudarte mucho :D
Un saludo. Sagrini


Título: Re: Extraer PE i pegarlo en otro fichero ¡ayuda!
Publicado por: ApOkAlizE en 27 Diciembre 2011, 01:06 am
http://www.megaupload.com/?d=KXRCD5DO
Aquí os dejo una prueva que he hecho es un programa que estoy haciendo para el instituto de credito de sintesis de grado medio, hay el archivo original, el que tendria que funcionar y un .txt con el PE. A ver si sabeis deicrme que hago mal.
Gracias!


Título: Re: Extraer PE i pegarlo en otro fichero ¡ayuda!
Publicado por: BlackZeroX en 27 Diciembre 2011, 02:03 am
http://www.megaupload.com/?d=KXRCD5DO
Aquí os dejo una prueva que he hecho es un programa que estoy haciendo para el instituto de credito de sintesis de grado medio, hay el archivo original, el que tendria que funcionar y un .txt con el PE. A ver si sabeis deicrme que hago mal.
Gracias!

Ya... ¿Hacemos ingenieria Inversa?, ¿Adivinamos lo que has hecho? si es asi ¿Cuanto tendremos de retribución?... una cosa es querer ayudarte y otra que nos dejes a ciegas y adivinar lo que has hecho/quieres hacer, por otro me parece que el problema esta mal planteado...

Nota. Aprende primero que es el Formato PE y a que se refiere, por que extraer el PE implica que el EXE esta dentro de un lugar X... y lo deseas extraer (como si estubiera en un zip...), creo que quieres leer cada campo de las estructuras implicadas en el Formato PE (esto se entenderia mejor ya que el archivo que subiste trae 2 archivo en formato PE de dudosa procedencia que nunca ejecute).

Dulces Lunas!¡.

EI: juntando mensajes.

Acabo de ver los archivos con un editor Hexadesimal y lo que pasa es que TODOS lo caracteres que NO SON IMPRIMIBLES los pasa a espacios... una vez mas pon tu codigo... a simple vista lo que hiciste fue abrir un exe con el block de notas y guardarlo en un txt y despues guardarlo en un EXE si es este proceso entonces es un proceso errado por lo que ya te mencione... debes abrir el archivo en modo BINARIO, y si lo visualizas visualizalo en Hexadecial...

Por ejemplo:

*Los Bytes 0x00 pasan a ser 0x20...

Dulces Lunas!¡.


Título: Re: Extraer PE i pegarlo en otro fichero ¡ayuda!
Publicado por: ApOkAlizE en 27 Diciembre 2011, 17:14 pm
BlackZeroX lo que sucede es que yo havia provado de hacerlo desde C++ abriendolo en modo binario y creando otro archivo .exe y meterle el binario del primero pero tampoco me funcionava y este ejemplo si que lo abrí con el bloc de notas, ¿pero quieres decir que hay alguna diferencia? La verdad no he entendido muy bien a que te referias con tu respuesta.


Título: Re: Extraer PE i pegarlo en otro fichero ¡ayuda!
Publicado por: x64core en 27 Diciembre 2011, 18:02 pm
para darle un nombre podria ser "como extraer bytes de un exe"
bueno a mi se me ocurre mapear el archivo y guardarlo en una string unicode
luego abrir un nuevo archivo e insertar los bytes asi de sencillo :P
para mapear:

CreateFile
CreateFileMapping
MapViewOfFile



Título: Re: Extraer PE i pegarlo en otro fichero ¡ayuda!
Publicado por: Eternal Idol en 27 Diciembre 2011, 18:17 pm
No, Unicode se usa para texto.


Título: Re: Extraer PE i pegarlo en otro fichero ¡ayuda!
Publicado por: x64core en 27 Diciembre 2011, 18:25 pm
oh si!
en un arrays de bytes no ;D
es que lo habia hecho en VB :P


Título: Re: Extraer PE i pegarlo en otro fichero ¡ayuda!
Publicado por: BlackZeroX en 27 Diciembre 2011, 21:54 pm
BlackZeroX lo que sucede es que yo havia provado de hacerlo desde C++ abriendolo en modo binario y creando otro archivo .exe y meterle el binario del primero pero tampoco me funcionava y este ejemplo si que lo abrí con el bloc de notas, ¿pero quieres decir que hay alguna diferencia? La verdad no he entendido muy bien a que te referias con tu respuesta.

Lo que pasa es que si abres una rchivo con BYTE NO IMPRIMIBLES con el block de notas y lo vuelves a guardar con este (el block de notas) TE SUSTITUye TODOS LOS BYtES NO IMPRIMIBLES  por bytes 0x20 (Espacios)... es decir te corrrompe el archivo original... lo que haces yo tambien lo he hecho en forma concluyente en C debes abrir los archivos asi:

Código
  1.  
  2.    hFileSrc = fopen(FILE_SRC, "rb");
  3.    hFileDst = fopen(FILE_DST, "wb");
  4.  
  5.  

P.D.: Da igual si se hace en vb o C es el mismo proceso siempre. UNICODE son para textos con caracteres especiales... caracteres chinos, japonen... pero au asi solo son un conjunto de byte Unicode = 2 bytes...

Dulces Lunas!¡.


Título: Re: Extraer PE i pegarlo en otro fichero ¡ayuda!
Publicado por: Sagrini en 29 Diciembre 2011, 19:09 pm
Trabaja con esto:
Código
  1. #include <fcntl.h>
  2.  
  3. int main ()
  4. {
  5. int origen=open ("./origen", O_RDONLY), destino=open ("./destino", O_RDWR|O_CREAT|O_TRUNC, 0777); char buffer [15];
  6. read (origen, buffer, 15); write (destino, &buffer, sizeof (buffer));
  7. close (origen); close (destino); return 0;
  8. }
  9.  


Título: Re: Extraer PE i pegarlo en otro fichero ¡ayuda!
Publicado por: ApOkAlizE en 21 Enero 2012, 12:47 pm
Sagrini he provado tu codigo en Visual C++ y con lode open, write, close... me dice que no se encuentra el identificador...

EI: juntando mensajes. La proxima vez borro.

#include <io.h>
Esto era lo que me faltava, pero igualmente he cambiado los 15 bytes que pnias en el ejemplo por un numero suficientemente grande para almacenar las asi 4MB que ocupa el archivo, pero luego me daerror porque el numero es demasiado grande... ¿que tengo que hacer crearvarias variablesy pasarlo todo particionado en distintas variables?
gracias


Título: Re: Extraer PE i pegarlo en otro fichero ¡ayuda!
Publicado por: Sagrini en 21 Enero 2012, 13:28 pm
No creo que de error porque "el tamaño del archivo sea demasiado grande". Tiene que ser otra cosa (se abre mal, etc...)


Título: Re: Extraer PE i pegarlo en otro fichero ¡ayuda!
Publicado por: Xandrete en 21 Enero 2012, 14:19 pm
ApOkAlizE, ¿has visto la película V de Vendetta hace poco, por casualidad  ;D?

Saludos