Foro de elhacker.net

Programación => Ingeniería Inversa => Mensaje iniciado por: jmpesp en 17 Junio 2019, 00:33 am



Título: Encontrar funcion que me interesa
Publicado por: jmpesp en 17 Junio 2019, 00:33 am
Buenas.

Soy bastante nuevo en el tema de la ingenieria inversa y tengo el siguiente problema:

Tengo un programa que realiza una peticion HTTP a un servidor al presionar un boton.
Lo que quiero lograr es conseguir la direccion de esta funcion para hookearla con un detour y poder interceptar esta peticion HTTP para modificarla/logearla/cancelarla/desviarla/etc (solo con fines de aprendizaje :rolleyes:).

El problema es que no logro encontrar cual es la funcion que esta enviando la peticion.

Estoy usando Cheat Engine para debuggear el programa, por la unica razon de que ya me acostumbre a utilizarlo. Asumo que cualquier otro debugger tendra las mismas capacidades.

Que es lo que intente y no funciono?

  • Setear un breakpoint en WS2_32.send() y mirar la stacktrace para ver que funcion esta llamando a send(), que deberia ser la funcion que prepara la consulta HTTP. No funciono, el programa nunca se detiene ahi. Como sea que se este enviando no utiliza esta libreria.
  • Coneguir el address del buffer donde se guarda el input del usuario (que se incluye en el body de la peticion HTTP) y fijarme que instrucciones acceden a esta direccion, suponiendo que la funcion que prepara la peticion lee el input desde ahi. No funciono, todas las instrucciones que acceden a esta direccion no tienen nada que ver con la consulta. Al parecer, este buffer se guarda en algun tipo de estructura y la funcion que envia la peticion HTTP no accede directamente a este buffer si no a la estructura.
  • Revisar las librerias que carga el ejecutable para ver si hay alguna relacionada al protocolo HTTP que pudiese ser usada para enviar la consulta (al estilo WinHTTP). No funciono, no encontre ninguna libreria que me haga ruido.
  • Buscar parte de la consulta HTTP en la memoria, ejemplo "GET /foobar" y fijarme que accede a esta direccion (que deberia ser alguna funcion que prepara la consulta y otra que la envia). No funciono, cada consulta tiene su propio buffer aparte, por lo tanto cuando me pongo a "escuchar" que instrucciones acceden a esa direccion ninguna lo hace, puesto que ya lo hicieron al enviar la consulta y las futuras consultas tienen su propio buffer.

Estoy procediendo de manera correcta?
Que harian ustedes para localizar la funcion?

Siempre utilice estos procedimientos para encontrar funciones en otros programas y tuve exito, pero esta vez se me esta complicando.

Desde ya gracias por su ayuda.


Título: Re: Encontrar funcion que me interesa
Publicado por: Flamer en 17 Junio 2019, 18:57 pm
Citar
Estoy usando Cheat Engine

usa mejor el x32dbg y busca el string de la dirección web y si la quieres desviar cambia el string por otra..... pero si la quieres cancelar tendrías que ver un poco mas a fondo la aplicación







Título: Re: Encontrar funcion que me interesa
Publicado por: jmpesp en 18 Junio 2019, 01:54 am
En realidad lo de desviarla lo puse a modo de ejemplo, lo que me interesa es hookear la funcion.
Por eso necesito localizarla.

Probe buscando la URL en la memoria (suponiendo que la funcion que envia la peticion accede directamente a esta direccion para formular la consulta HTTP) pero no pude encontrar nada, hay decenas de direcciones con el mismo valor.

No conocia ese debugger, lo voy a probar a ver que tal. Parece sencillo, gracias.