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.
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!
Imagen
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!¡.
Web: http://infrangelux.sytes.net/
ScanX: http://ScanX.sytes.net/
FileX: http://FileX.sytes.net/
Blog: http://BlogX.sytes.net/

Imagen


The Dark Shadow is my passion.
El infierno es mi Hogar, mi novia es Lilith y el metal mi religion
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!
Imagen
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
Imagen
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!
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.
En tu ventana
Y en tu ventana, gritas al cielo pero lo dices callada..
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!¡.
Web: http://infrangelux.sytes.net/
ScanX: http://ScanX.sytes.net/
FileX: http://FileX.sytes.net/
Blog: http://BlogX.sytes.net/

Imagen


The Dark Shadow is my passion.
El infierno es mi Hogar, mi novia es Lilith y el metal mi religion
Responder

Volver a “C/C++”