drswinghead

主站网址

导航

想起来以前写过的一段C代码

这段代码的功能是调试C语言中的内存漏洞。 原理: 使用自定义的宏malloc, calloc, realloc, free 来覆盖libc中的相应函数声明,这些宏中实现记录函数的调用位置(如在哪个文件,哪一行),记录的数据存放在一个链表中,然后再调用libc中的相应内存处理函数。等到程序结束时,通过遍历这个链接,能找到那些没有正常释放的内存分配位置,从而达到获得内存漏洞的相关信息,以便及时修补这些内存问题。 这段代码那是帮我找到了几个隐藏很深的内存漏洞问题,还花了几天的时间,不过总算没有白写了。 现在看来这段代码的功能与dmalloc相似,当时还没听说过dmalloc,所以硬生生写出这么一段代码。 后来我也有用过dmalloc,但一直没有看过dmalloc如何实现的,它的实现肯定要更底层一些,不会只是简单的宏替换了。 dmalloc的原理也是在调用相关的内存函数时做记录的吗?还有什么函数能hook这些libc函数的调用呢? 我的这部分代码丢了,只记得一点实现原理了,有空的话看看dmalloc的实现,对我这部分的理解更有帮助些。

posted on 2010-06-18 21:12  drswinghead  阅读(197)  评论(0编辑  收藏  举报