任意の実行可能ファイルが与えられた場合、間接分岐先アドレスの一部またはすべてを特定することは可能ですか? これらの目的地を計算するためのプログラムによるアプローチは何ですか? 実行可能ファイルから CFG を再構築していて、間接分岐を計算するクリーンな方法が見つからないため、質問しています。少しのフォレンジック分析でオペランドを特定できる場合もありますが、そうでない場合もあります。
1 に答える
2
コンパイルされたプログラムで可能な間接分岐先を静的に計算することは、アドレスの可能な値を見つけるためのデータフロー分析を実行することによって可能になります。
ジャンプ テーブル(switch ステートメントから生成されることが多い種類のもの)などの単純なものでうまく機能する可能性があります。
ただし、一般的なケースでは、そこからまともな結果を得るのはかなり難しいと思います-特に、分析には何らかの価値があると思われるため、何らかのヒープ分析が必要であり、特にアセンブリでは簡単ではありませんこれは、メモリへのロードとストアでいっぱいになる可能性があります。
于 2013-06-26T07:41:25.083 に答える