哪些方法可用于检测Linux内核中覆盖的内存?

时间:2013-07-16 07:03:29

标签: linux linux-kernel kernel

如果存在内存覆盖的代码,例如Linux内核或驱动程序中的缓冲区溢出,则很难调试并查找根本原因。

我知道我可以启用SLAB调试来获取一些信息。如果在释放后将某些内容写入slab内存,那么我们将看到警告。但是这种方法存在局限性,有时我们仍然无法获得有用的线索。

是否有其他内核调试方法来检测内存被覆盖?

1 个答案:

答案 0 :(得分:3)

看看Kmemcheck tool。您可以在内核配置中启用它并重建内核。

Kmemcheck可能会显着降低系统速度,但它可以检测到不正确的内存访问,否则很难找到。

对于x86_64架构上的内核4.1或更新版本,Kernel Address sanitizer (KASan)也可能是一个选项。它应该比Kmemcheck快得多。