プロセスの変更を反映するために、 "/proc/$pid/mem"のアドレス値を編集できますか?

プロセスの変更を反映するために、 "/proc/$pid/mem"のアドレス値を編集できますか?

メモリを直接変更して、プログラムの実行中に値を編集できることを確認したかったです。

私の思考プロセス(テストされていない)は、次のことです。

  1. プログラムを実行してください。
  2. システム・モニター・アプリケーションを開き、プログラムを「停止」(終了または終了しない).
  3. 航海/proc/<ID#>/
  4. chmodmem読み取りおよび書き込みアクセスを許可するファイル
  5. mem16進エディタを使用した編集
  6. 引き続き計画を立て、変更が反映されていることを確認してください。

これがこの問題を解決する正しい方法ですか?

そうでなければ、どうやってこれを達成しようとしますか?

答え1

~によるとman 5 proc:

/proc/[pid]/mem
  This file can be used to access the pages of a process's  memory  through  open(2),
  read(2), and lseek(2).

つまり、このインターフェイスは次の機能のみを提供します。読むライセンス。このファイルに書き込んだり変更したりすることはできません。

# chmod +w /proc/$pid/mem
chmod: changing permissions of '/proc/2905/mem': Operation not permitted

実行中のプロセスのメモリを変更したい場合、私が考えることができる1つの方法は次のとおりです。デバッガをプロセスに接続し、それを使用して変数を設定します。

関連情報