我想转储正在运行的可执行文件的虚拟内存地址。
这是我正在运行的命令:./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
) 恢复。