我想转储正在运行的可执行文件的虚拟内存地址。
这是我正在运行的命令:./executable & cat /proc/$(pidof executable)/maps > maps.dump,这是我得到的错误:cat: /proc//maps: No such file or directory
我使用&的目的是让executable在后台运行,这样当尝试访问它以转储maps信息时,进程将保持活跃,并且它的/proc/$(pidof executable)目录仍然在那里,但是显然它没有这样做,因为pidof executable返回空,这意味着进程不再运行。
发布于 2021-12-17 12:47:24
您可以使用shell的功能来记住在$!变量中启动的最后一个进程的PID。
#!/bin/bash
./executable &
cat /proc/$!/maps > maps.dump如果您获得radare2,可以有一种更好的检查内存的方法:
#!/bin/bash
./executable &
r2 -d $!将您放到radare2外壳中。
dm是您想要运行以获得“经典”内存映射的命令,dm=在视觉上帮助您更好地理解所查看的内容,dmd将调试内存映射转储到一个文件中。
然而,你可以做一些实际有用的事情。比如,使用dmsa临时保存所有映射的内存,然后随意修改进程内存,测试它对进程及其行为的影响,并在必要时进行选择性恢复(dmr)或完全恢复(dmra)。
https://unix.stackexchange.com/questions/682847
复制相似问题