私は現在のプロジェクトでこの問題に遭遇しました。これには、バイナリレベルでのコードについての推論が必要です。
CALL命令のオペランドを見れば、プログラム内のすべての関数の開始位置を特定できると思います。このリストを取得したら、開始アドレスが見つかるまで逆方向に検索するだけで、どの関数がアドレスを囲んでいるかを判別できますか?IEは、命令を囲む関数の開始アドレスであり、命令アドレスよりも小さい最大の関数アドレスですか?
上記の方法が正しくない場合、命令を囲む関数の開始アドレスを見つける別の方法はありますか?
編集:質問の説明を追加しました。
edit2:私の方法はおそらく間違っています。コンパイラは、関数本体をマシンコードの連続した領域に配置することは保証されていません。