0

単一のプロシージャを抽出する必要がある64ビットのCOFFオブジェクトファイル(ソースコードやデバッグ情報はありません)があります。

手順は比較的短く、依存関係は次のとおりです

  1. 1つのグローバル変数。
  2. インポートされたプロシージャのカップル。

私はすでにコードの逆アセンブルと再アセンブルを試みました。ただし、奇妙な理由で、デバッガーと逆アセンブラーでコードが同じように見えても、同じように動作しません。(実行可能セクションに正しいフラグなどがあることを確認しようとしましたが、私の知る限り、これらはすべて正しく、値は実行時に「あるべき」値とも一致します。)

では、プロセスでコードを逆アセンブルして再アセンブルすることなく、関数を新しいオブジェクトファイルに直接コピーする(またはその関数以外のすべてを削除する)方法はありますか?

4

1 に答える 1

1

よくわかりませんが、一般的には簡単な方法があります。

たとえば、複数のプロシージャが1つの共有コード(つまり静的関数)を参照できます。したがって、ファイル内のすべてのコードブロックのコールグラフを作成し、プロシージャによって参照されるコードブロックを取得する必要があります。新しいコードレイアウトがあるため、すべてのジャンプと呼び出しでアドレスを修正する必要があります。

于 2012-01-25T12:06:19.833 に答える