実行中の実行可能ファイルの仮想メモリアドレスをダンプしたいと思います。
これは私が実行しているコマンドです:./executable & cat /proc/$(pidof executable)/maps > maps.dump
、そしてこれが私が受け取るエラーです:cat: /proc//maps: No such file or directory
私が使用した目的は、プロセスがアクティブになって情報をダンプするためにプロセスにアクセスしようとしたときにそのディレクトリがまだ存在するようにバックグラウンドで実行し続けることでしたが、明らかに&
プロセスがないことを意味するnullを返したため、そうしませんでした。より長く走るもの。executable
/proc/$(pidof executable)
maps
pidof executable
答え1
シェルの機能を使用して、変数で始まった最後のプロセスのPIDを覚えておくことができます$!
。
#!/bin/bash
./executable &
cat /proc/$!/maps > maps.dump
あなたが得る場合radare2
:
#!/bin/bash
./executable &
r2 -d $!
Radare2シェルに移動します。
dm
dm=
見ている内容を理解するのに視覚的に役立つ「クラシック」メモリマップを取得するために実行しようとするコマンドは、デバッグdmd
メモリマップをファイルにダンプします。
しかし、本当に役に立つことができます。たとえば、一時メモリを使用してマップされたすべてのメモリを保存し、プロセスdmsa
メモリを使用して遊びながらプロセスと動作に与える影響をテストし、必要に応じてオプションで(dmr
)または完全に()復元します。dmra