Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: carbon1 en 24 Enero 2012, 17:41 pm



Título: [C] Inyección de DLL
Publicado por: carbon1 en 24 Enero 2012, 17:41 pm
Hola a todos... tengo una pequeña duda con este tema de la inyección de DLL. Bueno voy a explicarlo con un pequeño ejemplo. Suponiendo que tengo este programa:

Código
  1. void Main()
  2. {
  3.    int Variable = 9;
  4. }
  5.  

Quisiera saber si al inyectar una dll hay alguna forma de obtener el valor de esa variable... que no sea con su dirección de memoria, se entiende?

Gracias de antemano!


Título: Re: [C] Inyección de DLL
Publicado por: x64core en 24 Enero 2012, 18:39 pm
mmmm :P
los nombres de las variables a la hora del diseño son solo referencias para que sea mas entendible por uno
ya compilado el programa son solo direcciones de memoria, aunque podes hacer un scanner de memoria al segmento de datos
del programa aunque muchas otras variables pueden tener ese valor


Título: Re: [C] Inyección de DLL
Publicado por: Uknow en 24 Enero 2012, 18:56 pm
Hola a todos... tengo una pequeña duda con este tema de la inyección de DLL. Bueno voy a explicarlo con un pequeño ejemplo. Suponiendo que tengo este programa:

Código
  1. void Main()
  2. {
  3.    int Variable = 9;
  4. }
  5.  

Quisiera saber si al inyectar una dll hay alguna forma de obtener el valor de esa variable... que no sea con su dirección de memoria, se entiende?

Gracias de antemano!
Usualmente inyectas una dll para estar en el mismo espacio de memoria que el programa al q te inyectas y hacer mas comodo la modificacion de la memoria.
Lo que quieres es obtener el valor de una variable, puedes tanto como depurar el programa y buscar el valor en la memoria, dumpear la memoria por partes y vas buscando los valore q concidan.

Espero haber ayuddo. :p

saludos.


Título: Re: [C] Inyección de DLL
Publicado por: carbon1 en 24 Enero 2012, 21:11 pm
Gracias a ambos!  ;)

Usualmente inyectas una dll para estar en el mismo espacio de memoria que el programa al q te inyectas y hacer mas comodo la modificacion de la memoria.
Lo que quieres es obtener el valor de una variable, puedes tanto como depurar el programa y buscar el valor en la memoria, dumpear la memoria por partes y vas buscando los valore q concidan.

Espero haber ayuddo. :p

saludos.

Ya que lo has mencionado, cual es esa comodidad a la que te refieres? Que me permite hacer la inyeccion dll en el momento de leer la memoria que no lo pueda hacer un simple programa, sin inyectar dll alguna?

Gracias... :)


Título: Re: [C] Inyección de DLL
Publicado por: Uknow en 25 Enero 2012, 03:01 am
Gracias a ambos!  ;)

Ya que lo has mencionado, cual es esa comodidad a la que te refieres? Que me permite hacer la inyeccion dll en el momento de leer la memoria que no lo pueda hacer un simple programa, sin inyectar dll alguna?

Gracias... :)
Cada proceso tiene su propio espacio en memoria. Tecnicamente no puedes acceder al espacio de memoria del otro proceso desde el tuyo. Por eso cuando usas un inyector o  loader reservas espacio para la dll en el proceso a inyectar y escribes la ruta d la dll en el espacio reservado, luego lanzas un hilo hacia loadlibrary para cargar tu dll en el espacio de memoria del otro proceso. Una vez cargada la dll en el proceso, puedes acceder directamente a las direcciones usadas por el programa.

Lee sobre como se maneja la memoria. En el foro hay mucha info, tutos y manuales al respecto. Igual a mi me ayudo mucho a entenderlo aprendiendo cracking con los tuts de ricardo narvaja.

Un saludo y espero haberte ayudado. : )


Título: Re: [C] Inyección de DLL
Publicado por: carbon1 en 25 Enero 2012, 16:31 pm
Gracias, lo voy a tener en cuenta!  :)