Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: samuelhm en 16 Noviembre 2012, 17:15 pm



Título: Leer datos de un programa en ejecución
Publicado por: samuelhm en 16 Noviembre 2012, 17:15 pm
Como podria leer datos de un programa en ejecución? creo que es posible pero no encuentro documentación en español para ello.

Lo que quiero hacer, es el el software de pokerstars, cuando tienes una mesa abierta, poder recivir y guardar en variables el nombre, y tamaño de fichas de cada jugador.

Aunque seria mas interesante si se pudiera hacer sniffeando el puerto que usa para recivir los datos en este programa, para poder ejecutarlo en otro pc y hacerlo indetectable.

Un Saludo, y muchas gracias si alguien sabe donde puedo conseguir esta info.


Título: Re: Leer datos de un programa en ejecución
Publicado por: darkangel2125 en 16 Noviembre 2012, 19:12 pm
poker stars tiene una seguridad muy alta pero no imposible de romper, creo que tendras realizar captura de paquetes de datos con un programa snifer y descubrir el algoritmo y cifrado que tiene pokerstar
lo de almacenar los datos en variables tendras que diseñar un programa complejo para hacerlo despues de sacar el cifrado y el algoritmo que usa, algo que parece muy complicado si no sabes donde empezar
tendras que estudiar mucho antes de poder iniciar con tu plan


Título: Re: Leer datos de un programa en ejecución
Publicado por: samuelhm en 16 Noviembre 2012, 19:16 pm
Bueno, no tengo problemas ya que no necesito estar logueado, en vez de hacerlo sniffeando, seria mas facil hacerlo accediendo a la memoria que usa el programa, y buscar en que parte de la memoria se esta guardando estos valores y leerlos, he visto por el foro un chico que tiene un programa que saca datos de los ejecutables, pero no adjunta el codigo fuente.


Título: Re: Leer datos de un programa en ejecución
Publicado por: samuelhm en 16 Noviembre 2012, 19:17 pm
El software lo tengo casi listo, solo necesito leer datos, a unas malas hago captura de pantalla y intento trabajar con alguna libreria que maneje imagenes. pero creo que seria mucho engorro así.


Título: Re: Leer datos de un programa en ejecución
Publicado por: avesudra en 16 Noviembre 2012, 19:31 pm
Tienes que buscar las direcciones de memoria que usa el programa para eso y sacarlas con la función de la API de Windows :
http://msdn.microsoft.com/es-es/library/windows/desktop/ms680553%28v=vs.85%29.aspx


Título: Re: Leer datos de un programa en ejecución
Publicado por: samuelhm en 16 Noviembre 2012, 19:51 pm
Soy un poco malo con el ingles, ese es el problema.
 
Igualmente buscaré por google el uso de ReadProcessMemory function porque no acabo de entender que me da exactamente, de todas formas muchas gracias, ya tengo algo para buscar.


Título: Re: Leer datos de un programa en ejecución
Publicado por: samuelhm en 16 Noviembre 2012, 20:01 pm
El programa este de CHeat Engine, encuentra la direccion de memoria de las fichas de cada uno, lo malo es que tengo que buscar por ejemplo el numero de fichas y el programa extrae la direccion de memoria.

Se podria hacer automatico o es imposible ya que cada vez que se ejecuta la direccion de memoria asignada al valor de la cantidad de fichas siempre es diferente?

EDITO:
Quiero decir, para que se entienda, si yo quiero sacar los nombres y cantidad de fichas de cada jugador sin tener que buscarlo con un programa externo, y cada vez en una mesa diferente, es posible? cada vez que reinicie el programa no estaran en diferentes posiciones de la memoria?




Título: Re: Leer datos de un programa en ejecución
Publicado por: avesudra en 16 Noviembre 2012, 21:01 pm
Posible es , como todo , pero eso ya se sale fuera de mis límites , ni idea.


Título: Re: Leer datos de un programa en ejecución
Publicado por: x64core en 16 Noviembre 2012, 23:35 pm
El programa este de CHeat Engine, encuentra la direccion de memoria de las fichas de cada uno, lo malo es que tengo que buscar por ejemplo el numero de fichas y el programa extrae la direccion de memoria.

Se podria hacer automatico o es imposible ya que cada vez que se ejecuta la direccion de memoria asignada al valor de la cantidad de fichas siempre es diferente?

EDITO:
Quiero decir, para que se entienda, si yo quiero sacar los nombres y cantidad de fichas de cada jugador sin tener que buscarlo con un programa externo, y cada vez en una mesa diferente, es posible? cada vez que reinicie el programa no estaran en diferentes posiciones de la memoria?




Si, la direccion cambia debido a que probablemente el dato se almacena en un buffer creado dinamicamente o si es almacenado siempre en la sección
de datos entonces el ejecutable debe tener tabla de relocalizacion, la solucion es, comprobar si el buffer donde se almacenan los datos es creado
dinamicamente  o si es almacenado siempre en la sección de datos, si es almacenado en ella, entonces el ejecutable tiene tabla de relocalizacion y
podes obtener la direccion siempre y cuando localizes la direccion desde el archivo en el disco luego resta la direccion base menos la direccion actual en memoria, luego con la direccion ( no offset ) del dato sumas la direccion base actual del ejecutable en memoria más la direccion en memoria  del dato más
el resultado anterior ( entre la direccion base del archivo PE y la direccion base el archivo en memoria ) y obtendras la direccion del dato.

si el buffer es creado dinamicamente entonces tendras que buscar la llamada a la API que crea ese buffer y hookearla y así obtendras el puntero a los datos basandote en los parametros que se pasan al programa, obviamente el programa debe reservar bastante memoria osea varias llamadas a la API.



Título: Re: Leer datos de un programa en ejecución
Publicado por: samuelhm en 16 Noviembre 2012, 23:49 pm
Muchas Gracias por esta gran explicación RHL, aunque la verdad ahora que he comprobado, se escapa de mis limites  :-( :-( :-(.
Intentaré ir aprendiendo poco a poco a hacerlo.


Título: Re: Leer datos de un programa en ejecución
Publicado por: fary en 17 Noviembre 2012, 11:42 am
Puedes inyectarte en el proceso y hookear las API de winsock para snifear lo que recibe o bien realizar ingenieria inversay  averiguar donde guarda los datos... luego solo te inyectas en el proceso y lees las direcciones.

un saludo.


Título: Re: Leer datos de un programa en ejecución
Publicado por: samuelhm en 17 Noviembre 2012, 13:55 pm
Pues si, para lo que necesito no me hace falta estar logueado asi que, probaré en cuanto aprenda"!

Me recomendais algun buen tutorial???


Título: Re: Leer datos de un programa en ejecución
Publicado por: fary en 18 Noviembre 2012, 03:06 am
Depende de que tecnica quieras emplear pero vamos...

http://foro.elhacker.net/analisis_y_diseno_de_malware/taller_api_hooking_en_modo_usuario-t262962.0.html

Y este subforo:

http://foro.elhacker.net/ingenieria_inversa-b26.0/

un saludo.





Título: Re: Leer datos de un programa en ejecución
Publicado por: zamolxe en 6 Abril 2013, 15:29 pm
Samuelhm sigues trabajando para el proyecto de poker stars ? yo tambien le estoy echando un ojo al tema.