Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: APOKLIPTICO en 7 Octubre 2010, 01:57 am



Título: Detectar Memory leaks y buffers overflows.
Publicado por: APOKLIPTICO en 7 Octubre 2010, 01:57 am
Hola gente, como va todo?
Miren, estoy teniendo un problema con un programita que estoy haciendo.
Estoy usando winpcap para sniffar un flujo de datos, filtralos y convertirlos, el tema es que por alguna razon, el parser me parsea bien un paquete y me parsea mal otro paquete que es estructuralmente igual, con el contenido cambiado.
Esto me lleva a pensar que puedo llegar a tener algun buffer/heap overflow que me puede estar causando problemas con la memoria.
Hay algun programa para detectar facilmente estas fallas?
Estoy bajo windows XP SP3 x86 + Code::Blocks + Gcc.
Muchas gracias!
Un abrazo
APOKLIPTICO


Título: Re: Detectar Memory leaks y buffers overflows.
Publicado por: Eternal Idol en 7 Octubre 2010, 10:27 am
Proba con Application Verifier (http://www.microsoft.com/downloads/en/details.aspx?familyid=c4a25ab9-649d-4a1b-b4a7-c9d8b095df18&displaylang=en):

"Application Verifier is designed specifically to detect and help debug memory corruptions and critical security vulnerabilities.
This is achieved by monitoring a native application's interaction with the Windows operating system, profiling its use of objects, the registry, the file system, and Win32 APIs (including heaps, handles, locks, etc), and indicating issues when and where they are discovered. "


• The Basics verification layer will require that you run your application under a debugger.

Asi que te recomiendo usar WinDbg (http://www.microsoft.com/whdc/devtools/debugging/default.mspx).


Título: Re: Detectar Memory leaks y buffers overflows.
Publicado por: APOKLIPTICO en 7 Octubre 2010, 13:18 pm
Gracias, pero por que no ollydbg?


Título: Re: Detectar Memory leaks y buffers overflows.
Publicado por: Eternal Idol en 7 Octubre 2010, 15:54 pm
Prefiero el depurador oficial de Microsoft que sirve tanto para modo Usuario como modo Kernel.


Título: Re: Detectar Memory leaks y buffers overflows.
Publicado por: APOKLIPTICO en 7 Octubre 2010, 18:38 pm
Instalé el programa que me dijiste, pero me hacía crashear el programa compilado, lo desinstalé y ahora los ejecutables compilados me miden 29 mb (Tanto el debug como el release). Que puede haber cambiado?

PD: Lo de los 29 mb era por otra cosa, es un array muy grande que estoy usando que será reemplazado luego por memoria dinámica.


Título: Re: Detectar Memory leaks y buffers overflows.
Publicado por: Eternal Idol en 7 Octubre 2010, 18:54 pm
Instalé el programa que me dijiste, pero me hacía crashear el programa compilado, lo desinstalé y ahora los ejecutables compilados me miden 29 mb (Tanto el debug como el release). Que puede haber cambiado?

Al parecer detecto un problema, lo mejor seria que lo analizaras y lo solucionaras en lugar de desinstalar el Application Verifier.


Título: Re: Detectar Memory leaks y buffers overflows.
Publicado por: APOKLIPTICO en 7 Octubre 2010, 19:03 pm
El tema es que si detectó un problema, detectó un problema en la librería de winpcap, lo cual me parece medio extraño, falla en la funcion find all devs, que lo que hace es enumerar todos los adaptadores que hay.

PD: la verdad que no confío mucho en las herramientas de microsoft cuando se trata de debugging, no hay algo GNU/GPL/CC?


Título: Re: Detectar Memory leaks y buffers overflows.
Publicado por: Eternal Idol en 7 Octubre 2010, 19:26 pm
Puede ser, pero EN no indica la razon por la cual se produce el problema en cuestion, sin analizarlo nunca lo vas a saber.

PD. Entonces mejor trabaja bajo un S.O. que no sea de Microsoft, para Windows mejor que sus herramientas no hay.


Título: Re: Detectar Memory leaks y buffers overflows.
Publicado por: APOKLIPTICO en 7 Octubre 2010, 19:39 pm
Mmh, no estoy de acuerdo, prefiero code::blocks + mingw que la herramienta de microsoft (visual c++). Prefiero ultradefrag que el defragmentador de windows, prefiero cualquier otro firewall antes que el firewall de windows y prefiero usar un vnc antes que usar el escritorio compartido de windows. Las herramientas de microsoft suelen tener bugs, ser poco eficientes o no cumplir el objetivo que se busca.
Voy a analizar el bug, pero repito, me parece que es más posible que haya una falla en el software de microsoft que haya un error en el winpcap.


Título: Re: Detectar Memory leaks y buffers overflows.
Publicado por: Eternal Idol en 7 Octubre 2010, 20:08 pm
Mmh, no estoy de acuerdo, prefiero code::blocks + mingw que la herramienta de microsoft (visual c++). Prefiero ultradefrag que el defragmentador de windows, prefiero cualquier otro firewall antes que el firewall de windows y prefiero usar un vnc antes que usar el escritorio compartido de windows. Las herramientas de microsoft suelen tener bugs, ser poco eficientes o no cumplir el objetivo que se busca.

El firewall no es una herramienta de desarrollo y el defragmentador tampoco (veo que dice en la pagina de ese programita algo sugestivo "ReactOS and Wine aren't supported yet, because they have no defragmentation API implemented at this moment."), cualquier otro firewall serio usa la arquitectura que Microsoft diseño (junto a un par de empresas mas) e implemento (NDIS), a diferencia del firewall de Windows que es gratuito y cumple su simple objetivo. A mi el escritorio remoto me funciona perfectamente, me alegro que otro software que funciona bajo Windows te sirva mas.
Lo de VC++ lo paso casi de largo, esta claro que nunca te metiste a fondo en el desarrollo para Windows ni comparaste el output generado por los compiladores disponibles.

Todo el software tiene bugs, que no comprendas al Application Verifier o WinDbg es otra historia, lo unico que estas haciendo es esparcir FUD.

Voy a analizar el bug, pero repito, me parece que es más posible que haya una falla en el software de microsoft que haya un error en el winpcap.

Si, seguro que la culpa es de Microsoft y no de tu codigo, tenes razon, pero igual no entiendo para que usas Windows, mejor instalate GNU/Linux y depuralo con gdb.


Título: Re: Detectar Memory leaks y buffers overflows.
Publicado por: APOKLIPTICO en 7 Octubre 2010, 20:15 pm
Eternal, realmente no entiendo por que siempre tenés que responder tan agresivamente, no es mejor no buscar el conflicto y tratar de resolver las cosas de la manera más relajada?
No me voy a poner a discutir si es mejor microsoft o gnu, porque no es el objetivo de este post, lo único que me gustaría saber es si existe un detector de BoF's HoF's y memory leaks GNU.

Lo que se me ocurre, es que el Application Verifier es incompatible con la librería winpcap, dudo que esa parte del código tenga errores porque la copié de un sample que venía con el winpcap developer package. Te parece que esto podría ser asi?

Un saludo
APOKLIPTICO.

PD: No puedo instalarme GNU/Linux porque este programa está destinado para windows.


Título: Re: Detectar Memory leaks y buffers overflows.
Publicado por: Horricreu en 7 Octubre 2010, 20:23 pm
PD: No puedo instalarme GNU/Linux porque este programa está destinado para windows.

Entonces haz caso a las indicaciones de los más experimentados.

Saludos :P


Título: Re: Detectar Memory leaks y buffers overflows.
Publicado por: APOKLIPTICO en 7 Octubre 2010, 20:26 pm
No estoy ignorando las indicaciones de alguien que veo como más experimentado (Eternal Idol), lo único que estoy diciendo, es que puede existir una incompatibilidad entre winpcap y el App Verifier, por eso pido una herramienta GNU, ya que winpcap es GNU.


Título: Re: Detectar Memory leaks y buffers overflows.
Publicado por: Eternal Idol en 7 Octubre 2010, 20:33 pm
Eternal, realmente no entiendo por que siempre tenés que responder tan agresivamente, no es mejor no buscar el conflicto y tratar de resolver las cosas de la manera más relajada?

Es decir que hacer diatribas en contra de Microsoft en este hilo si es aceptable y yo soy el que responde agresivamente.
En definitiva aca el unico que tiene algo para resolver sos vos, los errores que tiene tu programa, se te indican las herramientas ideales para hacerlo y seguis buscandole la quinta pata al gato POR PREJUICIOS. Usa Google entonces, no preguntes, busca, averigua y proba todo, seguro que te va a resultar la manera mas comoda y relajada.

No me voy a poner a discutir si es mejor microsoft o gnu, porque no es el objetivo de este post, lo único que me gustaría saber es si existe un detector de BoF's HoF's y memory leaks GNU.

Usa Google (despues de haber hecho practicamente lo que decis que no vas a hacer) para buscar eso, al final no es una pregunta sobre C/C++ esta.

Lo que se me ocurre, es que el Application Verifier es incompatible con la librería winpcap, dudo que esa parte del código tenga errores porque la copié de un sample que venía con el winpcap developer package. Te parece que esto podría ser asi?

¿No es mucho mas simple analizar el error que intentar teorizar y buscar hipotesis?

Cita de: APOKLIPTICO
No estoy ignorando las indicaciones de alguien que veo como más experimentado (Eternal Idol), lo único que estoy diciendo, es que puede existir una incompatibilidad entre winpcap y el App Verifier, por eso pido una herramienta GNU, ya que winpcap es GNU.

En lugar de intentar COMPRENDER que estaba pasando desinstalaste el programa.

¿Es claro el accionar, no? En lugar de analizar donde esta la excepcion, cual es la pila, que parametros son pasados, directamente estas ASUMIENDO que el fallo esta en la herramienta de Microsoft. Por mas que ahora lo intentes matizar, lo que hiciste fue eso, desinstalar el programa.

"Instalé el programa que me dijiste, pero me hacía crashear el programa compilado, lo desinstalé"


Título: Re: Detectar Memory leaks y buffers overflows.
Publicado por: APOKLIPTICO en 7 Octubre 2010, 20:40 pm
Citar
Citar
Eternal, realmente no entiendo por que siempre tenés que responder tan agresivamente, no es mejor no buscar el conflicto y tratar de resolver las cosas de la manera más relajada?

Es decir que hacer diatribas en contra de Microsoft en este hilo si es aceptable y yo soy el que responde agresivamente.
En definitiva aca el unico que tiene algo para resolver sos vos, los errores que tiene tu programa, se te indican las herramientas ideales para hacerlo y seguis buscandole la quinta pata al gato POR PREJUICIOS. Usa Google entonces, no preguntes, busca, averigua y proba todo.

Te pido disculpas si esto te pareció un ataque personal, realmente no lo fue.
Citar
Citar
No me voy a poner a discutir si es mejor microsoft o gnu, porque no es el objetivo de este post, lo único que me gustaría saber es si existe un detector de BoF's HoF's y memory leaks GNU.

Usa Google.

Usé google, es por esto que estoy preguntando.

Citar
Citar
Lo que se me ocurre, es que el Application Verifier es incompatible con la librería winpcap, dudo que esa parte del código tenga errores porque la copié de un sample que venía con el winpcap developer package. Te parece que esto podría ser asi?

¿No es mucho mas simple analizar el error que intentar teorizar y buscar hipotesis?

Dije que lo iba a analizar el error, pero mientras tanto, para ahorrar tiempo, pregunto si no existe una herramienta GNU para analizar.

Citar
Citar
No estoy ignorando las indicaciones de alguien que veo como más experimentado (Eternal Idol), lo único que estoy diciendo, es que puede existir una incompatibilidad entre winpcap y el App Verifier, por eso pido una herramienta GNU, ya que winpcap es GNU.

En lugar de intentar COMPRENDER que estaba pasando desinstalaste el programa. ¿Es claro el accionar, no? En lugar de analizar donde esta la excepcion, cual es la pila, que parametros son pasados, directamente estas ASUMIENDO que el fallo esta en la herramienta de Microsoft. Por mas que ahora lo intentes matizar, lo que hiciste fue eso, desinstalar el programa.

Desinstalé el programa para ver si eso era lo que estaba causando el crash en mi programa, y efectivamente eso es lo que estaba causando el problema, no estoy intentando matizar nada, ni ocultar nada, ni atacar a nadie.

Mira, evidentemente te está poniendo un poco nervioso esto, trataré de buscar la solucion por mi cuenta, porque evidentemente no podés ser objetivo y ver más allá de los problemas que puede haber entre nosotros. Borrá el post si te parece, hasta luego y gracias por la ayuda.


Título: Re: Detectar Memory leaks y buffers overflows.
Publicado por: Eternal Idol en 7 Octubre 2010, 20:47 pm
Te pido disculpas si esto te pareció un ataque personal, realmente no lo fue.

Me parece que no comprendiste lo que dije ...

Usé google, es por esto que estoy preguntando.

Genial; ++Google.

Dije que lo iba a analizar el error, pero mientras tanto, para ahorrar tiempo, pregunto si no existe una herramienta GNU para analizar.

Ferpecto.

Desinstalé el programa para ver si eso era lo que estaba causando el crash en mi programa, y efectivamente eso es lo que estaba causando el problema, no estoy intentando matizar nada, ni ocultar nada, ni atacar a nadie.

Es decir que estaba detectando un error y en lugar de intentar comprenderlo ...

Mira, evidentemente te está poniendo un poco nervioso esto, trataré de buscar la solucion por mi cuenta, porque evidentemente no podés ser objetivo y ver más allá de los problemas que puede haber entre nosotros. Borrá el post si te parece, hasta luego y gracias por la ayuda.

Nada mas lejos de la realidad; lo mas evidente es que se te dieron las mejores herramientas disponibles, mas alla de lo bien o mal que me caigas, y no sos capaz de intentar comprender como funcionan debido a tu gran objetividad. En fin, suerte con eso.