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.
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
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.
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í.
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
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.
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?
Posible es , como todo , pero eso ya se sale fuera de mis límites , ni idea.
Cita de: 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?
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.
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.
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.
Pues si, para lo que necesito no me hace falta estar logueado asi que, probaré en cuanto aprenda"!
Me recomendais algun buen tutorial???
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.
Samuelhm sigues trabajando para el proyecto de poker stars ? yo tambien le estoy echando un ojo al tema.