gpt4 book ai didi

c++ - 设计内存覆盖检测工具

转载 作者:太空狗 更新时间:2023-10-29 21:27:46 25 4
gpt4 key购买 nike

我的任务是在 Linux 中设计和编写一个新的内存覆盖测试工具,它可以捕获由于动态分配内存中的覆盖而导致的错误。

一个好的方法是,如果用户请求 x 字节,则分配 x+r 字节。使用 mprotect 禁止访问 r 字节,因此如果用户程序运行到该部分,它将停止生成 SIGSEGV。

但在上述情况下的问题是,mprotect 需要一个映射内存 (mmap) 并且每次有一个 malloc 请求映射x+r 字节实际上是一种开销。

您能推荐其他方式吗?或者任何代码片段(如果您使用过此类工具)?

P.S:任何人都可以分享他们知道或使用过的任何此类开源工具的设计文档吗?

最佳答案

一种方法是分配更多的内存并在前面和后面用特定的字节模式填充它,用户数据将在这些红色区域之间。在重新分配时,您检查红色区域模式是否完好无损。 Identifying Memory Management Bugs Within Applications Using the libumem Library更详细地解释它。

关于c++ - 设计内存覆盖检测工具,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8614128/

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