Que es un RunPE?

Iniciado por x64core, 29 Septiembre 2011, 18:01 PM

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

Karcrack

#10
Una gran explicación Swash ;-)

Se puede hacer en VB6 lo del cifrado facilmente... pero habría que perder algunas funcionalidades propias del lenguaje... o bien toquetear el linker :P

[Kayser]

Cita de: The Swash en 30 Septiembre 2011, 01:39 AM
Buena tarde,
Con respecto a las respuestas, todas están erradas, pero vamos no del todo y no es por desmeritarles. En realidad el RunPE obviamente tiene estrecha relación con el Formato PE, pero no es exactamente eso.
El famoso RunPE es una técnica la cual permite ejecutar archivos ("on the fly" - Karcrack), es decir sin necesidad de que el archivo ocupe tamaño físico, esto se hace porque el archivo está plasmado en un buffer en memoria. Esta técnica es usada en malware generalmente en Cifradores, los cuales tienen en su cuerpo el archivo cifrado, luego en memoria lo descifran y lo ejecutan, y esto no llamará mucho la atención.

Como funciona un RunPE:

  • 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.

Un saludo.

Buenas reabro el tema porque yo tambien tengo dudas sobre el RunPE...
Alguien mas puede arrojar algo mas de luz sobre el tema?
Alguien puede explicarme que se entiende por obtener los contextos de un proceso? Tampoco entiendo porque hay que editar el ebx+8...