Foro de elhacker.net

Programación => Ingeniería Inversa => Mensaje iniciado por: s_azazel en 31 Octubre 2010, 11:34 am



Título: LLamar a una direccion de memoria desde otro programa
Publicado por: s_azazel en 31 Octubre 2010, 11:34 am
Muy Buenas, estoy iniciandome en el mundo de la ingenieria inversa y mi primer proyecto es hacer un progrma que controle otro.

Para eso he puesto varios bmsg y he visto las llamadas que hacen.

Mi pregunta es... en algun lenguaje de programacion.... vb o c se puede escribir alguna orden para que en tiempo de ejecucion el programa valla a una direccion y la ejecute????

Muchas gracias!!!!!


Título: Re: LLamar a una direccion de memoria desde otro programa
Publicado por: [Zero] en 31 Octubre 2010, 11:41 am
¿A una dirección del propio programa o a una dirección del programa remoto? Si es del propio programa puedes hacerlo en C con un puntero a una función o en ASM con un call o un jmp. Si es lo segundo puedes usar SuspendThread+GetThreadContext+SetThreadContext+ResumeThread o CreateRemoteThread.

Saludos


Título: Re: LLamar a una direccion de memoria desde otro programa
Publicado por: s_azazel en 31 Octubre 2010, 11:46 am
Es del programa remoto para que se ejecute la rutina como si la llamaras desde dentro

Es posible hacer algo desde vb???

Estoy ahora mismo aprendiendo c pero aun lo llevo algo flojillo como para hacer un entorno visual XDD

Muchas gracias!!!!


Título: Re: LLamar a una direccion de memoria desde otro programa
Publicado por: karmany en 31 Octubre 2010, 11:56 am
z_azazel: "estoy iniciandome en el mundo de la ingenieria inversa"
Por este motivo, tal vez lo que intentas hacer sea algo complejo. ¿Por qué no intentas modificar directamente el programa, en vez de utilizar otro para que lo haga?

Si expones más detalladamente tu problema tal vez te podamos orientar para encontrar una solución más sencilla.(estoy casi convencido que la hay).


Título: Re: LLamar a una direccion de memoria desde otro programa
Publicado por: s_azazel en 31 Octubre 2010, 12:04 pm
Antes de nada muchas gracias a todos por vuestra ayuda

Exactamente lo que estoy intentando es hacer un bot de un juego....

El problema que tengo es que mediante SendKeys henvio pulsaciones de teclado y me funciona perfectametne excepto para el movimiento

He puesto un BMSG en Olly para que me salte al pulsar una tecla y he localizado la rutina que hace cuadno se pulsa por ejemplo la tecla de avanzar

Lo que pretendia hacer es que de alguan forma mediante el bot me saltara a esa rutina directamente

Muchas gracias de nuevo por orientarme un poco XDDD


Título: Re: LLamar a una direccion de memoria desde otro programa
Publicado por: karmany en 31 Octubre 2010, 13:03 pm
¿Y por qué no te funciona un Sendkeys a la pulsación de avanzar?
Qué programa es?


Título: Re: LLamar a una direccion de memoria desde otro programa
Publicado por: s_azazel en 31 Octubre 2010, 13:10 pm
Es un juego tipo WOW se llama runes of magic al enviar por ejemplo la pulsacion de la tecla "b" me abre la mochila pero al enviar la "w" no avanza el personaje tambien he probado enviando "{x 10}" y en el chat del juego me pone 10 w pero con el chat desactivado no me avanza

Por eso habia pensado el llamar directamente a la direcion del programa que da la orden de avanzar la cual tengo localizada ya

Gracias de nuevo por vuestro tiempo


Título: Re: LLamar a una direccion de memoria desde otro programa
Publicado por: [Zero] en 31 Octubre 2010, 13:21 pm
Si quieres hacer eso lo más recomendable sería inyectar una DLL en el proceso y desde ahí ejecutas lo que quieras, pero eso en VB como que no  :-\.

Saludos


Título: Re: LLamar a una direccion de memoria desde otro programa
Publicado por: s_azazel en 31 Octubre 2010, 18:46 pm
Ok muchas gracias me voy a poner a ello pues con c XDDD a ver
¿hay alguna aplicacion de c++ del tipo vb en entorno visual???

La cosa seria hacer la dll con las instruccines inyectarla y ejecutarla no??

voy a leer un poco a ver si me aclaro con las inyecciones de dll XDDDD

Gracias!!!!


Título: Re: LLamar a una direccion de memoria desde otro programa
Publicado por: [Zero] en 31 Octubre 2010, 19:19 pm
Si, lee sobre inyecciones DLL, también puedes leer sobre API Hooking (MazarD tiene unos papers muy buenos sobre ambos temas) y luego puedes ver algunos códigos de cheats sencillos. Se trata de ejecutar un código tuyo en el proceso remoto, y la forma más fácil de hacerlo es con una inyección DLL.

Para lo de la GUI, yo te recomiendo 100 veces Qt, puedes hacer la GUI usando drag&drop además de muchas otras cosas no relacionadas con la interfaz gráfica, y siempre siendo multiplataforma.

Saludos