Comunicación entre 2 programas distintos

Iniciado por arenoide, 31 Mayo 2011, 22:30 PM

0 Miembros y 1 Visitante están viendo este tema.

arenoide

Hola chicos,

Veréis, mi duda supongo que será simple, pero no sé ni como buscarla por google ni nada por el estilo.

Me gustaría saber como crear un programa que "converse" con otro hecho por otra persona para sacar información. Por ejemplo, es muy típico que en poker, se usen programas de poker que te dan estadísiticas en tiempo real y todo eso. Esos programas tienen de alguna forma que conversar con el programa de poker en cuestión para sacar toda esa información. Sabéis como lo hacen?

Muchas gracias.

madpitbull_99




«Si quieres la paz prepárate para la guerra» Flavius Vegetius


[Taller]Instalación/Configuración y Teoría de Servicios en Red

arenoide

Pero yo del otro programa no puedo tocar nada ni decirle que me mande información alguna, porque no es un programa que haya hecho yo. Es un programa con el que quiero conversar pero del que no sé nada :S

madpitbull_99

Entonces lo que buscas, son los HOOKS.

En el foro hay bastante información sobre esto, utiliza el buscador o Google.



«Si quieres la paz prepárate para la guerra» Flavius Vegetius


[Taller]Instalación/Configuración y Teoría de Servicios en Red

arenoide

Dado que el programa externo recibe los datos y las acciones por internet, debería centrarme en la información que el programa recibe por su puerto, no?

Cómo haría esto? Es decir, la información que he encontrado mirando por internet sobre hooking es muy amplia. Se puede recibir información de casi cualquier cosa metiendo el programa. Por ejemplo, me he bajado el API Monitor, y se lo he pasado a mi programa y recibía 30000 llamadas en menos de 2 segundos, así que he reducido el filtro solo a todo lo que es red, por lo que he comentado antes, ya que las instrucciones son simples y las recibe por internet, pues entiendo que leyendo lo que pasa en la red podría entender las acciones que toma. Pero siguen apareciendo muchas llamadas y no entiendo mucho.

Alguien podría orientarme o pasarme algún link de ayuda orientado a un caso como el mío?

Básicamente pretendo interceptar todos los movimientos que le llegan desde internet al programa de poker, de forma que pueda almacenar todos esos datos en una base de datos para analizarlos.

madpitbull_99

Puedes mirar los mensajes/tramas de red, con algún sniffer como Wireshark.

PD: Por cierto, tu pregunta tiene algo que ver con .NET?



«Si quieres la paz prepárate para la guerra» Flavius Vegetius


[Taller]Instalación/Configuración y Teoría de Servicios en Red

arenoide

#6
Mi idea sería hacer el programa en .NET, pero el otro programa no sé si está hecho en .NET o en qué.

El caso es que hay algunos programas muy simples (y de muy poco peso) que son capaces de recoger el valor de las cartas, como por ejemplo el "Holdem Watcher"

Edito: Acabo de probar el tema de captura de paquetes y se ve que no es así como funcionan estos programas puesto que los paquetes vienen con cifrado https, así que el tema de captura de paquetes descartado.

madpitbull_99

Lee los siguientes artículos:

How I Built a Working Poker Bot, Part 1.
How I Built a Working Online Poker Bot, Part 2: Interlude.

Podrás hacerte una idea de como funcionan los bots usados para poker online.

Creo que deberían mover este tema a Programación General, dado que, de momento, poco tiene que ver con .NET.



«Si quieres la paz prepárate para la guerra» Flavius Vegetius


[Taller]Instalación/Configuración y Teoría de Servicios en Red

kiriost

Eso sería ingresar a la memoria de otro programa para leerla, ya que allí es donde se almcenan todo los datos. Lo más sencillo si estas en windows es utilizar 2 APIs:

  • WriteProcessMemory() - escribir en memoria de un proceso
  • ReadProcessMEmory() - leer memoria de un proces
*Para abrir el proceso tendrías que utilizar OpenProcess().

Todo esto en Windows. Linux provee otras APIs para esto, como ptrace().

O también puedes utilizar los hooks.
http://www.godsys.com.ar > Programación. Hacking y Cracking. Sistemas. Desarrollo Web.
Java, C/C++, PHP, Python, Perl, HTML, Game-Hacking, Defacing, Desarrollo Web, GNU/Linux, y más