你如何在Unix(或至少Linux)中安全地读取内存?

时间:2012-05-13 08:54:16

标签: linux unix memory readprocessmemory

我想读取一个字节的内存,但不知道内存是否真的可读。您可以在OS X下使用vm_read函数在Windows下执行此操作,在Windows下使用ReadProcessMemory或使用_ try / _catch执行此操作。在Linux下我相信我可以使用ptrace,但前提是尚未调试。

仅供参考我想要这样做的原因是我正在编写异常处理程序程序状态转储代码,如果用户可以看到各种内存值是什么,或者知道它们是什么,它会帮助用户很多无效。

1 个答案:

答案 0 :(得分:1)

如果您不必非常快,这在代码处理状态转储/异常处理程序中很常见,那么您可以在访问尝试之前将自己的信号处理程序放在适当的位置,然后将其恢复。令人难以置信的痛苦和缓慢,但它已经完成。

另一种方法是解析/ dev / proc // maps的内容,以构建一次内存映射,然后在每次访问时决定该进程内是否有地址。

如果是我,我会尝试找到已经完成此操作的内容,并在许可证满足我的需求时直接重新实施或复制代码。从头开始编写是很痛苦的,并且很高兴能够通过符号解析来提供支持跟踪。