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