Fallo al abrir handles durante hook de API de Windows

Iniciado por Halos, 8 Abril 2013, 14:47 PM

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

Halos

Saludos again, estoy haciendo un programita que hookea ciertas APIs del sistema (HttpSendRequestX por ejemplo  :P). Dentro del código mio que se ejecuta antes del original realizo varias operaciones. Una por ejemplo es loguear ciertos parámetros recibidos por esta API.

El logueo no me funcionaba como esperaba, ya que, por ejemplo, al hookear esta función en InternetExplorer, se logueaba sin ningún problema, pero IE no podía navegar, ya que me dice "IE no puede encontrar la página web". También al enviar los datos a través de red, se envían correctamente pero IE "se peirde".

Lo primero que pensé es que algo raro hacía en la función inyectada (como dejar la pila sucia, pero mirando con Olly, ésta se queda limpia). El fallo es más desconcertante aún cuando le he puesto que el logueo se haga solamente para ciertos dominios. Para los dominios en los que se loguean los parámetros de la API, ésta no funciona, pero en el resto la navegación por los otros dominios es normal, a pesar de ejecutarse mi código inyectado igualmente.

Comentanto y descomentando líneas de código me he dado cuenta que cuando se utiliza algún HANDLE es cuando IE no puede navegar. El logueo lo hago de dos maneras. Priemro probé a escribir en un fichero, y cuando en la función que loguea descomentaba la línea en la que abría el manejador, IE no funcionaba. Lo mismo me pasa cuando intento enviar los datos por la red, cuando descomento las líneas que me devuelven un HINTERNET, IE no puede seguir navegando. En ningún momento IE ha tenido ningún fallo grave ni nada por el estilo, solamente me dice que no puede mostrar la página web  :huh:

Parece como que al usar yo manejadores estoy tocando donde no debo... pero es que no estoy haciendo nada raro amos. Aquí podéis ver el código de logueo a través de internet: https://gist.github.com/anonymous/d0ace002ff84156870ab

No sé por donde tirar  :-\

Saludos y gracias!

Halos

Sigo depurando esto y por comprobar he mirado a ver si el ID del handle del primer paŕametro de HttpSendRequest es el mismo que alguno de los que me devuelven InternetOpen, InternetConnect, HttpOpenRequest... y nada son consecutivos a éste, así que dudo mucho que se sobreescriban HANDLEs anteriores