gpt4 book ai didi

c - 检测写入字符串

转载 作者:太空宇宙 更新时间:2023-11-03 23:55:19 24 4
gpt4 key购买 nike

有没有办法让我在不使用 mprotect(我不能使用)的情况下检测/启动对字符串的写入?

目前我只能在后续读取中检测到写入,但为时已晚(后续读取可能来自完全不同的库)。

注意:由于优化器在进程内存中四处移动字符串,将 gdb 与观察点一起使用失败。

编辑:有问题的变量是一个类成员 (char*),它包含一些元数据作为字符串的前缀。字符串是需要不可变的部分,前缀必须是可写的。我在一个类静态散列中有数百万个这样的对象,并且可以从我们代码中的几乎任何位置访问它们。

最佳答案

您可以尝试将所有写入内存的代码包装在预处理器宏中,这些宏会检查您正在使用的地址,但由于大多数人喜欢使用简单的骨骼指针(而不是封装东西的库调用),它可能会付出很多努力。

唯一的其他选择是 mprotect(2) 或 GDB,它们都使用 CPU 的特殊部分来监视地址总线以访问相关内存。

因为您也不能使用它,所以最后一个选择是将代码打印在纸上,然后坐在安静的角落里花几天时间阅读它。这通常会奏效,但大多数人都会回避这种努力(因为它看起来不像“真正的”工作 ;-)。

关于c - 检测写入字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9308240/

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