2017-12-01 6 views
0

私は、プロセスのメモリをダンプし、コードページ、ガードページ、スタック、ヒープなどの異なる部分を区別しようとしています。システムメモリを呼び出すことでプロセスメモリをダンプすることができます。このシステムコールでは、memmoveを使ってバッファにプロセスメモリをダンプします。その後、ユーザーレベルの関数でバッファを印刷します。しかし、私はこの記憶のさまざまな部分を理解することはできません。今私の胚のアイデアは、これらの部分の境界を指すいくつかの特別なポインタを見つけることです。しかし、私はポインタがこれを行うことができます混乱している?あるいは、私はこれらの部分のサイズを計算し、印刷しなければなりません(次の部分はコード/ガードページです)?ガードページテーブル用の4kページテーブルがあることを確認できますが、コードページやスタックのような他の部分のサイズを取得する方法はわかりません。プロセスメモリの異なる部分をどのように区別できますか?

また、私のユーザレベルの機能が、PIDをパラメータとして与えることで、他のプロセスのメモリをダンプできるようにしたいのですが、どうやって起動するのか混乱します。他のプロセスのページテーブルを見つけてカーネルレベルのダンプ機能に登録するにはどうすればいいですか?

+1

elf形式を探します。 – Stargateur

+0

私は似たようなことを達成しようとしています。 memmoveを使ってバッファにプロセスメモリをダンプする方法を詳しく説明できますか? walkpgdirを使用する必要がありましたか?手順の一覧を表示したり、コードのその部分を貼り付けてください。 –

答えて

0

あなたが直面する問題は、メモリがメモリであるということです。プロセスは複数のヒープと複数のスタックを持つことができます。彼らは記憶のように見えます。

一部のシステムでは、実行可能ファイルを調べて、アプリケーションがメモリ内でどのように構造化されているかを調べることができます。しかし、最近のロードでは、メモリ内のプロセスのロードが頻繁にランダム化されます。

関連する問題