Tema destacado: Deseas probar algunas mejoras a la interfaz del foro? Prueba cake! acerca de
Autor
|
Tema: Extraer PE i pegarlo en otro fichero ¡ayuda! (Leído 1,050 veces)
|
ApOkAlizE
Desconectado
Mensajes: 131
¿sabes lo que vales? ¡consigue lo que te mereces!
|
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.
|
|
|
|
« Última modificación: 22 Diciembre 2011, 14:26 por ApOkAlizE »
|
En línea
|
Los virus informaticos son como las personas, hacen lo posible para destruir y hacen lo impossible para no ser destruidos... - ApOkAlizE
No nos atrevemos a muchas cosas porque son difíciles, pero son difíciles porque no nos atrevemos a hacerlas. -Seneca
|
|
|
Sagrini
Desconectado
Mensajes: 104
Visit las Vegas ;)
|
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  Un saludo. Sagrini
|
|
|
|
|
En línea
|
Un saludo. Sagrini
|
|
|
ApOkAlizE
Desconectado
Mensajes: 131
¿sabes lo que vales? ¡consigue lo que te mereces!
|
http://www.megaupload.com/?d=KXRCD5DOAquí 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!
|
|
|
|
|
En línea
|
Los virus informaticos son como las personas, hacen lo posible para destruir y hacen lo impossible para no ser destruidos... - ApOkAlizE
No nos atrevemos a muchas cosas porque son difíciles, pero son difíciles porque no nos atrevemos a hacerlas. -Seneca
|
|
|
BlackZeroX (Astaroth)
Wiki
Desconectado
Mensajes: 2.831
I'Love...!¡.
|
http://www.megaupload.com/?d=KXRCD5DOAquí 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!¡.
|
|
|
|
« Última modificación: 27 Diciembre 2011, 11:03 por Eternal Idol »
|
En línea
|
|
|
|
ApOkAlizE
Desconectado
Mensajes: 131
¿sabes lo que vales? ¡consigue lo que te mereces!
|
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.
|
|
|
|
|
En línea
|
Los virus informaticos son como las personas, hacen lo posible para destruir y hacen lo impossible para no ser destruidos... - ApOkAlizE
No nos atrevemos a muchas cosas porque son difíciles, pero son difíciles porque no nos atrevemos a hacerlas. -Seneca
|
|
|
RHL
Desconectado
Mensajes: 966
mental
|
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  para mapear: CreateFile CreateFileMapping MapViewOfFile
|
|
|
|
|
En línea
|
|
|
|
|
Eternal Idol
|
No, Unicode se usa para texto.
|
|
|
|
|
En línea
|
 La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste. Juan Domingo Perón
|
|
|
RHL
Desconectado
Mensajes: 966
mental
|
oh si! en un arrays de bytes no  es que lo habia hecho en VB 
|
|
|
|
|
En línea
|
|
|
|
BlackZeroX (Astaroth)
Wiki
Desconectado
Mensajes: 2.831
I'Love...!¡.
|
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: hFileSrc = fopen(FILE_SRC, "rb"); hFileDst = fopen(FILE_DST, "wb"); 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!¡.
|
|
|
|
« Última modificación: 27 Diciembre 2011, 21:57 por BlackZeroX (Astaroth) »
|
En línea
|
|
|
|
Sagrini
Desconectado
Mensajes: 104
Visit las Vegas ;)
|
Trabaja con esto: #include <fcntl.h> int main () { int origen=open ("./origen", O_RDONLY), destino=open ("./destino", O_RDWR|O_CREAT|O_TRUNC, 0777); char buffer [15]; read (origen, buffer, 15); write (destino, &buffer, sizeof (buffer)); close (origen); close (destino); return 0; }
|
|
|
|
|
En línea
|
Un saludo. Sagrini
|
|
|
ApOkAlizE
Desconectado
Mensajes: 131
¿sabes lo que vales? ¡consigue lo que te mereces!
|
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
|
|
|
|
« Última modificación: 21 Enero 2012, 13:22 por Eternal Idol »
|
En línea
|
Los virus informaticos son como las personas, hacen lo posible para destruir y hacen lo impossible para no ser destruidos... - ApOkAlizE
No nos atrevemos a muchas cosas porque son difíciles, pero son difíciles porque no nos atrevemos a hacerlas. -Seneca
|
|
|
Sagrini
Desconectado
Mensajes: 104
Visit las Vegas ;)
|
No creo que de error porque "el tamaño del archivo sea demasiado grande". Tiene que ser otra cosa (se abre mal, etc...)
|
|
|
|
|
En línea
|
Un saludo. Sagrini
|
|
|
Xandrete
Desconectado
Mensajes: 195
|
ApOkAlizE, ¿has visto la película V de Vendetta hace poco, por casualidad  ? Saludos
|
|
|
|
« Última modificación: 21 Enero 2012, 14:22 por Xandrete »
|
En línea
|
|
|
|
|
|