Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: carlosclanguagedev en 14 Mayo 2013, 19:32 pm



Título: Monitorear proceso hijo y saber cuando llama a una función específica.
Publicado por: carlosclanguagedev en 14 Mayo 2013, 19:32 pm
Hola quisiera saber si es posible hacer lo siguiente.

Actualmente hago lo siguiente en la aplicación.
Seteo en mi aplicación una variable de entorno.
Ejecuto otra aplicación como proceso hijo que hereda dicha variable de entorno.

El proceso hijo tiene la función getContent() que obtiene el valor de dicha variable de entorno.

Lo que quiero hacer es modificar el contenido de dicha variable desde el proceso padre justo cuando el proceso hijo llame a getContent.

Quiero ejecutar el proceso hijo en modo debug por así decirlo, poder monitorearlo, y cuando detecte que está llamando a la función getContent, injectarle el código para que setee en la variable de entorno el valor que yo desee.

Mi pregunta es si se puede, cómo puedo ejecutar el proceso hijo en modo monitoreo por decirlo de alguna manera?  y cómo saber desde el proceso padre cuando el puntero de ejecución del proceso hijo por así decirlo está en la entrada de una función específica.

Me encantaría poder aprender a hacer esto.


Título: Re: Monitorear proceso hijo y saber cuando llama a una función específica.
Publicado por: 0xDani en 15 Mayo 2013, 16:35 pm
ptrace() es lo que te hace falta.

Saludos.


Título: Re: Monitorear proceso hijo y saber cuando llama a una función específica.
Publicado por: Arkangel_0x7C5 en 15 Mayo 2013, 22:44 pm
Para estas cosas se suelen usar los hook(Ganchos)

Basicamente lo que se hace es localizar la direccion de la funcion que quieres enganchar y modificarla en tiempo de ejecucion para que salte a la funcion que tu necesites

Saludos


Título: Re: Monitorear proceso hijo y saber cuando llama a una función específica.
Publicado por: carlosclanguagedev en 16 Mayo 2013, 07:43 am
Cómo podría hacer eso en windows más o menos Arkangel_0x7C5.
¿Podría detectar cuando el proceso hijo llame a la función GetEnvironmentVariable, y saber el parámetro que le está pasando???