use*_*881 6 linux debugging gdb
我正在尝试在我正在使用GDB附加的正在运行的进程中找到某个值(整数幻数(654321)).我找到了一个find [/sn] start_addr, +len, val1 [, val2, ...]
命令,但它需要开始和结束地址,但我不知道我的进程内存在哪里开始以及结束的位置.
这似乎是一个非常普遍的问题,但我记得一年前谷歌搜索它,我现在重复了一遍没有成功,所以..我如何知道进程内存的起始位置和结束位置?
“所有记忆”的概念在现代过程中很复杂。您真正拥有的是来自不同来源的许多映射。您可以枚举这些(请确保不要尝试在没有读取访问权限的情况下从地图中读取!此外,您可能希望应用一些智能,这样您就不会最终搜索共享库的 .text 部分等...)在运行时读取/proc/$pid/maps
,然后编写一些脚本来向 gdb 提供适当的命令。老实说,我认为最简单的方法可能是在二进制文件本身中编写一个例程来执行此操作,然后从 gdb 调用它。