私はクローズドソースのサードパーティプログラムを持っています。
- プログラムに割り当てられているメモリを知る
- そのメモリにアクセスします (読み取り専用で問題ありません)
vmmap(1)、heap(1)、leaks(1) などのユーティリティは、必要なものと同様の機能を備えているようですが、そのソース (OS X バージョン) がどこにも見つからず、それらがどのように機能するのかわかりません仕事。できれば、これはすべてユーザー空間で実行され、場合によってはルートとして実行されます。回避できるのであれば、メモリ保護をバイパスする目的でカーネルコードを記述したくありません。
読み取りたいアドレスを shmat(2) の 2 番目の引数として渡す共有メモリを使用しようとしましたが、これは最終的に失敗し (おそらく意図した使用方法や悪い習慣ではありませんでした)、それでも方法がありませんでした。とにかく、探しているメモリを特定します(メモリを所有しているプログラムは、そのアドレスを私に報告する必要がありました)。
特定のプログラムのメモリ保護を無効にして、別のプロセスに割り当てられたメモリを読み書きしようとしたときにセグメンテーション違反が発生しないようにする方法はありますか? バグがシステム全体を深刻に破損させないようにするより良い方法はありますか?
これはどのように達成されますか?