[DUDA] Edición de la Estructura PE

Iniciado por s7evin, 2 Noviembre 2012, 16:42 PM

0 Miembros y 2 Visitantes están viendo este tema.

s7evin

Buenos días/tardes a tod@s,

Estoy practicando y aprendiendo (al mismo tiempo) la edición de PortableExecutable (PE) y más o menos voy entendiendo como funciona (lo básico).

La cuestión es que he modificado la última sección de un ejecutable (.reloc) y la he ampliado unos 300KB, depués de eso he modificando su SizeOfRawData. No neceisto que el ejecutable reserve memoria a la hora de ser ejecutado, tan solo quiero meter datos y que no sea "sospechoso".

Es suficiente modificando el SizeOfRawData? o deberia modificar el SizeOfImage y VirtualSize (.reloc)?

Tengo entendido que el VirtualSize y SizeOfImage, es la memoria que utilizara una vez se ejecute.

Aqui dejo un pantalla con el PEeditor:


Podriais aclararme estas dudas?

Gracias por adelantado!

PD: dependiendo del archivo (cuando son muy pesados) que inyecte en el .reloc, me sigue saltando el AV Avira... >_<

PD2: el tamaño original del SizeOfRawData (.reloc) era: 0xC00

fary

Claro, si agrandas la sección tienes que modificar tambien SizeOfImage y VirtualSize, sino  no te carga en memoria los datos nuevos que introduces... Por otra parte modifica mejor la sección de código y no la de la tabla de relocaciones.

un saludo.
Un byte a la izquierda.

s7evin

Thx por responder! :]

En realidad es lo que pretendo, que no se carguen en memoria.
Aún así, también he intentado cargarlos en memoria modificando SizeOfImage & VirtualSize, pero el ejecutable queda inservible...

VirtualSize = Tamaño de los datos de la sección a "pelo"?
SizeOfImage = alineado a SectAlign(VirtualAddress + VirtualSize) de la última sección?

Y en cuanto a lo de modificar la sección .text en vez de la .reloc, sí, quizá debería modificar esa, al menos no sería tan "raro" por el tamaño. Modificaré el código para que lo meta en .data a ver que sucede jeje

Muchas gracias!

fary

Virtualsize es el tamaño de la sección en memoria  y el sizeofimage es el tamaño del ejecutable entero en memoria (sí mal no recuerdo), de todas formas coge un manual del pe para asegurarte.


Finalmente una pregunta, dichos datos que son?

Un saludo.
Un byte a la izquierda.

s7evin

Estoy usando 2 ejecutables:

- El primero lanza un MessageBox con un mensajito de "hola mundo" hecho en C (peso: 1Kb).
- El otro es uno que realicé para parsear archivos en Delphi (peso: 356Kb).

Con el primero me funciona perfectamente, es poco peso. Pero sin embargo, con el otro según como, me falla, o no se carga, o lo detecta el Av como Dropper :S

Enfin seguiré en ellos jeje