EXE reciba algo de DLL y se piense que lo ha enviado el servidor

Iniciado por SnakeDrak, 21 Mayo 2010, 02:51 AM

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

SnakeDrak

Hola,

Explico un poco la situación, tengo un DLL inyectado hexadecimalmente que se ejecuta en un EXE para hookear las funciones de winsock y así leer todo lo que envía, recibe y además enviar y recibir por su misma conexión.

Mi problema surge cuando quiero utilizar una función determinada del EXE, como aún no sé cómo hacerlo así, pensé en hacerlo por un packet, es decir, quiero que el EXE reciba algo del DLL y se piense que lo ha enviado el servidor. Lo necesito así ya que conozco el servidor y sé que packet debo enviar para ejecutar una determinada función en el cliente, pero quiero hacerlo sin tocar nada del servidor con lo cual he pensado en la manera más simple: hacer que el cliente "reciba" un determinado packet pero enviándolo desde el DLL.

Tengo hookeadas las funciones del winsock pero aún así esto no me sirve para eso, tendría que sacrificar un packet recibido para colocar el que yo quiero y no me vale esa manera (obviamente), lo que necesito es que reciba un nuevo packet como si fuese del servidor.

Ojalá me hayan entendido y puedan ayudarme, saludos!!

bizco

creo que te estas complicando mas de la cuenta, la funcion como tu dices esta en el cliente, un puntero a funcion soluciona tus problemas y la podras llamar siempre que quieras con los datos que necesites.

SnakeDrak

#2
Hola ctlon,

Pero no tengo ni idea, ni del nombre de la función, ni de su utilización, ni de como llamar a la dirección de memoria donde se encuentra etc.. sé muy poco de ingeniería inversa así que tu manera no me sirve, a mi me resulta más fácil hacer que el cliente "reciba" algo como si lo hubiese enviado el servidor, bueno creo tal vez es más complicado de lo que yo imagino.

Si puedes ayudarme con la función también podría intentarlo, imagino que debo debugear y ver que función se ejecuta pero ahí me quedaría me parece, no creo que sea tan sencillo como un hook al send y recv del winsock.

Saludos y gracias!

bizco

que programa es? que funcion te interesa?. no me cuadran cosas de tus respuestas, pero bueno da mas informacion.

SnakeDrak

Hola,

Es un juego al cual le he creado un AntiBot por DLL que se comunica con el servidor, con unos algoritmos y tal.

Es una función propia del juego, la función en concreto lo que hace es enviar un mensaje global a si mismo, sale de un color especial no como el texto normal. Sinceramente no creo que esto ayude jaja xD.

El juego cuando recibe el packet (0x9A por si te interesa) automáticamente ejecuta esa función con el texto enviado en el mismo packet, por eso pensé hacer como un envío al cliente pero desde la DLL.

Haciendo debug imagino que puedo ver cual es la función que ejecuta al recibir 0x9A pero después no sabría como llamarla desde el DLL, como obtener la dirección de memoria.

Saludos!

bizco

creas un puntero a funcion, del mismo modo que has tenido que hacer para los hooks.

SnakeDrak

Hola,

Pero la dirección de memoria de los hook es muy simple con GetProcAddress y GetModuleHandle ya que sé que se encuentran en Ws2_32.dll y se el nombre de la función (recv, send, connect..). Bueno supongo que una vez sepa cual es el nombre de la función (si es que usa una función, porque si está por ejemplo en un case ya sí que estaré perdido) ¿debería acceder a la dirección de memoria pasándole el handle del proceso y el nombre de la función? no creo que sea algo tan fácil pero lo probaré mañana.

Aún así sigo esperando mi consulta de cómo enviar algo desde la DLL al cliente como si fuese el servidor.

Saludos.


SnakeDrak

Hola,

¿? Qué tiene que ver la función recv con esto?, por mucho que la ejecute no envía al cliente los datos recibidos.. bueno supongo que no puedes ayudarme más en mi problema, gracias por tu ayuda :D esperaré a que alguien pueda echarme un cable.

Saludos!

bizco

Citar¿? Qué tiene que ver la función recv con esto?

programa original -> recv hookeada (tu dll) -> recv original

si aun crees que no tiene nada que ver con lo que pides es que sinceramente no sabes ni que estas haciendo, ni que es lo que quieres.