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

发布: 2009-05-19 15:34

这段代码的功能是调试C语言中的内存漏洞。
原理:
使用自定义的宏malloc, calloc, realloc, free 来覆盖libc中的相应函数声明,这些宏中实现记录函数的调用位置(如在哪个文件,哪一行),记录的数据存放在一个链表中,然后再调用libc中的相应内存处理函数。等到程序结束时,通过遍历这个链接,能找到那些没有正常释放的内存分配位置,从而达到获得内存漏洞的相关信息,以便及时修补这些内存问题。
这段代码那是帮我找到了几个隐藏很深的内存漏洞问题,还花了几天的时间,不过总算没有白写了。

现在看来这段代码的功能与dmalloc相似,当时还没听说过dmalloc,所以硬生生写出这么一段代码。
后来我也有用过dmalloc,但一直没有看过dmalloc如何实现的,它的实现肯定要更底层一些,不会只是简单的宏替换了。

dmalloc的原理也是在调用相关的内存函数时做记录的吗?还有什么函数能hook这些libc函数的调用呢?

我的这部分代码丢了,只记得一点实现原理了,有空的话看看dmalloc的实现,对我这部分的理解更有帮助些。


原文: http://qtchina.tk/?q=node/299

Powered by zexport