我为 Linux 内核编写了一个简单的模块,它有一个堆栈缓冲区溢出漏洞。我想利用该模块,但我必须先关闭内核中的堆栈保护器。我怎样才能快速而简单地做到这一点?
每次都需要编译内核吗?
有没有其他方法可以关闭 Linux 内核模块中的堆栈保护(无需编译内核)?
答案1
这些选项通过将选项传递给编译器来工作,因此最直接的方法是重新编译内核。
然而,对于可重复且特定于模块的方式,kbuild 允许您在每个模块的基础上设置自定义 CFLAG。
https://www.kernel.org/doc/Documentation/kbuild/makefiles.txt
您特别希望为您想要利用的模块设置 -fno-stack-protector。
DKMS 还允许您针对任意内核版本设置树外驱动程序的自动重建。