gpt4 book ai didi

c++ - 如何关闭 Glibc 运行时保护?

转载 作者:IT老高 更新时间:2023-10-28 23:12:01 25 4
gpt4 key购买 nike

我正在尝试了解代码漏洞,并正在测试我编写的一些简单程序。然而,Glibc 在运行时捕获的许多问题(例如 Stack-Smashing、Double Free 等)。因此,我希望能够在没有 Glibc 运行时检测错误的情况下运行我的程序。有没有办法关闭 Glibc 的检测? (比如编译器标志等)。

我在上一个链接中看到它描述了如何关闭 ASLR 和 Canaries,但这不是我想做的,因为它仍然可以阻止像 Double Free 和我想尝试的其他一些堆错误这样的错误出(http://stackoverflow.com/questions/2340259/how-to-turn-off-gcc-compiler-optimization-to-enable-buffer-overflow)。

我也知道您可以使用 -w 标志关闭编译时警告,但这似乎也不是我想要的。我尝试过阅读 GCcflags并查找有关 Glibc 的信息,但我还没有得到任何结果。因此,我将不胜感激任何帮助。谢谢。

最佳答案

查看 malloc(3) 的手册页以了解 MALLOC_CHECK_ 环境变量的用法。使用它,您可以为那些双重免费错误以及不玩的东西关闭“中止”。

man malloc

因此,如果您的程序被称为“badfree”,您可以使用导出命令设置 MALLOC_CHECK_(注意尾随下划线),或者只在每次执行 badfree 时设置它。

export MALLOC_CHECK_=0
./badfree

--或--

MALLOC_CHECK_=0 ./badfree

请记住,如果您使用第一种方法,它是为您在该 shell 中运行的任何程序设置的。

malloc(3) 手册页中的 MALLOC_CHECK_ 设置如下:

MALLOC_CHECK_ =
0 Silently ignore any issues
1 Send error message to stderr
2 abort() is called immediately, killing your program.
3 Do both '1' and '2' (MALLOC_CHECK_ is a bitfield)

关于c++ - 如何关闭 Glibc 运行时保护?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6750815/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com