Página 1 de 1

Ejecutar desde la memoria?

Publicado: 26 Ene 2011, 10:51
por woons
Estoy googleando para ver si encuentro informacion sobre como ejecutar un ejecutable que este cargado en memoria. He encontrado esto:

[Enlace externo eliminado para invitados]

Pero cuando lo pruebo, con algunos programas me funciona y con otros no. Supongo que por lo que comenta al final:
The program running the process must have the same image base or else it will not work.
Alguien puede aportar un poco de luz al tema? Me vendria muy bien para hacerme mi propio cripter.

Re: Ejecutar desde la memoria?

Publicado: 26 Ene 2011, 17:33
por mDrinky
que contradiccion:

"como ejecutar un ejecutable que este cargado en memoria"

Si esta cargado en memoria, ya esta ejecutado! jajajaj.

te refieres a ejecutar el archivo sin que toque disco supongo (asi se entiende mejor).

Pues te lo dice ahi bien claro porque no te funca con algunos exe...
si su image base no es igual no te funcara. En la mayoria de los exe el imagebase es el mismo (400000).

salu2!

Re: Ejecutar desde la memoria?

Publicado: 26 Ene 2011, 20:44
por BlackZeroX
Drinky JF escribió:que contradiccion:
"como ejecutar un ejecutable que este cargado en memoria"
Mentiroso, bien puedo cargar un ejecutable y no estar corriendo(ejecutado).

Dulces Lunas!¡.

Re: Ejecutar desde la memoria?

Publicado: 26 Ene 2011, 21:03
por mDrinky
BlackZeroX escribió:
Drinky JF escribió:que contradiccion:
"como ejecutar un ejecutable que este cargado en memoria"
Mentiroso, bien puedo cargar un ejecutable y no estar corriendo(ejecutado).

Dulces Lunas!¡.
JAJAJAJA tendrias los datos del ejecutable, pero no el ejecutable cargado.

PD: de igual manera no se expreso muy claro en ese aspecto

salu2!

Re: Ejecutar desde la memoria?

Publicado: 26 Ene 2011, 21:10
por KainRazor
Drinky JF escribió:
BlackZeroX escribió:
Drinky JF escribió:que contradiccion:
"como ejecutar un ejecutable que este cargado en memoria"
Mentiroso, bien puedo cargar un ejecutable y no estar corriendo(ejecutado).

Dulces Lunas!¡.
JAJAJAJA tendrias los datos del ejecutable, pero no el ejecutable cargado.

PD: de igual manera no se expreso muy claro en ese aspecto

salu2!
Está bien planteada la pregunta.

Código: Seleccionar todo

http://es.wikipedia.org/wiki/Variable_%28programaci%C3%B3n%29
Saludos

Re: Ejecutar desde la memoria?

Publicado: 20 Jul 2012, 01:55
por docgreen
no conozco mucho, pero se me ocurre:

ejecutas el programa, se auto lee y se splitea. luego el STUB descencrypta. asi digo STUB + #SPLI# + Prog .

el programa seria, hago un flujo. no me acuerdo nada de C y estoy empezando de cero.

inicio
me abro.
me spliteo por #SPLI#
me quedo con el programa encryptado
lo descencrypto

hasta aca todo bien. pero no puedo ejecutar el programa, porque si bien esta en memoria descencryptado no lo puedo ejecutar.

entonces (sigo):

me genero un hilo, pero con el entrypoint apuntando al sector de memoria donde tengo cargado el archivo.

y listo, asi lo cargaria yo. es lo que estoy investigando, si logro un codigo lo pongo.

corrijanme si dije cualquiera!

Re: Ejecutar desde la memoria?

Publicado: 20 Jul 2012, 16:37
por The Swash
Hola,

El problema radica en que no puede reservar una zona de memoria previamente ocupada, de ahí lo del mismo imagebase. La solución ZwUnmapViewOfSection y esto es lo que ya todos conocemos, Dynamic Forking.

Un saludo,
Iván Portilla.

Re: Ejecutar desde la memoria?

Publicado: 26 Jul 2012, 08:19
por BlackZeroX
mDrinky escribió:
BlackZeroX escribió:
Drinky JF escribió:que contradiccion:
"como ejecutar un ejecutable que este cargado en memoria"
Mentiroso, bien puedo cargar un ejecutable y no estar corriendo(ejecutado).

Dulces Lunas!¡.
JAJAJAJA tendrias los datos del ejecutable, pero no el ejecutable cargado.

PD: de igual manera no se expreso muy claro en ese aspecto

salu2!
* Un ejecutable es una aplicación que a su vez es un archivo y a su vez es información y a su vez son estructuras y a su vez son bytes.
Resumen: Ejecutable -> Aplicación -> Archivo -> Información -> Estructuras -> Bytes

Si cargo los bytes en memoria YA TENDRIA CARGADO EL EJECUTABLE en memoria pero no lo tendría ejecutado...

<- LECTURA OBLIGATORIA ->
[Enlace externo eliminado para invitados]

* Comprobar que es un ejecutable válido (MZ & PE/x0/x0 Signature).
* Crear un nuevo proceso suspendido (Generalmente con el mismo ejecutable).
* Desasignar la proyección del archivo en ese proceso, ImageBase. (Limpiar el ejecutable del proceso).
* Obtener contextos (Registros).
* Reservar en memoria la dirección del ImageBase del ejecutable con un tamaño del campo SizeOfImage. (ImageBase y * SizeOfImage del archivo a ejecutar).
* Escribir la cabecera y las secciones alineadas por el campo SectionAlignment.
* Editar EAX en los registros leídos por la dirección del punto de entrada del archivo a ejecutar.
* Editar EBX + 8 por el ImageBase del ejecutable a cargar (Cambiar base de la imagen del nuevo proceso).
* Editar con el nuevo contexto (Escribir registros).
* Iniciar el proceso suspendido.

Dulces Lunas!¡.