2

私は次のように定義された構造を持つプログラムを持っています:

struct foo {
    int magic;
    int bar;
};

そして、この構造体のオブジェクトを作成するとき、私は常に次のことを行います。

object.magic = 654321;

このプログラムは、最終的にはコアダンプが生成されて終了します。

すべてを自動的にカウントしてすべてのバー値を検索し、たとえばそれを合計するC ++プログラムを作成することは可能ですか?

PS。これまでのところ、コアをバイナリとして単純に開いて、16進数に変換された654321を検索することはできないことを調査しました(16進エディタには何も見つかりません)。ウィキペディアによると、最新のUNIXシステムはELFを使用していますが、残念ながら、私はまったく経験の浅いプログラマーであるため、すべてのヘッダーシステムを理解しているわけではありません。

ヘッダー構造全体を学習せずにこのバーを取得する方法はありますか?

4

1 に答える 1

5

これまでのところ、コアをバイナリとして単純に開いて、16進数に変換された654321を検索することはできないことを調査しました(16進エディタには何も見つかりません)。

私はそれがいくつかの一致を生み出すことを期待します。検索を行ったときに、エンディアンが正しいことを確認してください。

注意:これを行うために使用する方法が何であれ、それは必然的に概算になります。このような検索で、のすべてのインスタンスが常に検出され、他にはfoo何も検出されないことは期待できません(特に、プロセスのクラッシュを引き起こしたイベントの後)。

于 2012-05-15T16:34:42.053 に答える