Detectar Memory leaks y buffers overflows.

Iniciado por APOKLIPTICO, 7 Octubre 2010, 01:57 AM

0 Miembros y 2 Visitantes están viendo este tema.

APOKLIPTICO

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
AMD Phenom II 1075T X6 @ 290 Mhz x 11 (HT 2036 Mhz NB Link 2616 Mhz) 1.23 Vcore
ASUS M4A89GTD-PRO/USB3
2x2gb G-Skill RipjawsX DDR3 1600 Mhz CL7 (7-8-7-24-25-1T)
Seagate 500 Gb
XFX HD4850 512Mb GDDR3. 650 Mhz/995 Mhz 1.1 Tflops.

Eternal Idol

Proba con Application Verifier:

"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.
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón

APOKLIPTICO

AMD Phenom II 1075T X6 @ 290 Mhz x 11 (HT 2036 Mhz NB Link 2616 Mhz) 1.23 Vcore
ASUS M4A89GTD-PRO/USB3
2x2gb G-Skill RipjawsX DDR3 1600 Mhz CL7 (7-8-7-24-25-1T)
Seagate 500 Gb
XFX HD4850 512Mb GDDR3. 650 Mhz/995 Mhz 1.1 Tflops.

Eternal Idol

Prefiero el depurador oficial de Microsoft que sirve tanto para modo Usuario como modo Kernel.
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón

APOKLIPTICO

#4
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.
AMD Phenom II 1075T X6 @ 290 Mhz x 11 (HT 2036 Mhz NB Link 2616 Mhz) 1.23 Vcore
ASUS M4A89GTD-PRO/USB3
2x2gb G-Skill RipjawsX DDR3 1600 Mhz CL7 (7-8-7-24-25-1T)
Seagate 500 Gb
XFX HD4850 512Mb GDDR3. 650 Mhz/995 Mhz 1.1 Tflops.

Eternal Idol

Cita de: APOKLIPTICO en  7 Octubre 2010, 18:38 PMInstalé 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.
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón

APOKLIPTICO

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?
AMD Phenom II 1075T X6 @ 290 Mhz x 11 (HT 2036 Mhz NB Link 2616 Mhz) 1.23 Vcore
ASUS M4A89GTD-PRO/USB3
2x2gb G-Skill RipjawsX DDR3 1600 Mhz CL7 (7-8-7-24-25-1T)
Seagate 500 Gb
XFX HD4850 512Mb GDDR3. 650 Mhz/995 Mhz 1.1 Tflops.

Eternal Idol

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.
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón

APOKLIPTICO

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.
AMD Phenom II 1075T X6 @ 290 Mhz x 11 (HT 2036 Mhz NB Link 2616 Mhz) 1.23 Vcore
ASUS M4A89GTD-PRO/USB3
2x2gb G-Skill RipjawsX DDR3 1600 Mhz CL7 (7-8-7-24-25-1T)
Seagate 500 Gb
XFX HD4850 512Mb GDDR3. 650 Mhz/995 Mhz 1.1 Tflops.

Eternal Idol

Cita de: 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.

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.

Cita de: APOKLIPTICO en  7 Octubre 2010, 19:39 PMVoy 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.
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón