从 /proc/pid/maps 转储可执行文件的虚拟内存地址

从 /proc/pid/maps 转储可执行文件的虚拟内存地址

我想转储正在运行的可执行文件的虚拟内存地址。

这是我正在运行的命令:./executable & cat /proc/$(pidof executable)/maps > maps.dump,这是我收到的错误:cat: /proc//maps: No such file or directory

我使用的目的&是保持executable在后台运行,以便进程保持活动状态,并且/proc/$(pidof executable)在尝试访问它以转储信息时其目录仍然存在maps,但显然它没有这样做,因为pidof executable返回空,这意味着进程是不再运行。

答案1

您可以使用 shell 的功能来记住您在变量中启动的最后一个进程的 PID $!

#!/bin/bash
./executable &
cat /proc/$!/maps > maps.dump

如果你得到radare2

#!/bin/bash
./executable &
r2 -d $!

会将您带到radare2 shell。

dm是您想要运行以获取“经典”内存映射的命令,dm=在视觉上更有助于理解您正在查看的内容,dmd将调试内存映射转储到文件。

然而,你可以做一些真正有用的事情。例如,使用 临时保存所有映射内存dmsa,然后随心所欲地摆弄进程内存,测试它对进程及其行为的影响,并在必要时选择性地 ( dmr) 或完全 ( dmra) 恢复。

相关内容