1

私は小さな計測ツールを書いています。インストルメンテーション ルーチンをバイナリ ファイル内に挿入する必要があります。これらのルーチンを別のコード セグメントと別のデータ セグメントに挿入することをお勧めします。これを実現する方法を説明していただけますか? さらに、元のファイルのコード セグメントのサイズを変更するにはどうすればよいですか?

一番、

4

2 に答える 2

1

インストルメンテーション ルーチンをバイナリ ファイル内に挿入する必要があります。適切なアプローチは、これらのルーチンを別のコード セグメントと別のデータ セグメントに挿入することです。

とはbinary file? 再配置可能な ( ) オブジェクト ファイルに対してこれを行うことと、完全にリンクされた実行可能ファイル ( ) または共有ライブラリ ( ) に対してこれを行うことには大きな違いがあります。ET_RELET_EXECET_DYN

これを達成する方法を説明できますか?

の場合ET_REL、それはかなり単純明快なはずです。セクション ヘッダーを指すファイル ヘッダーを読み、セクションがどこにあるかを示し.dataます.text。次に、新しいファイルを作成して、必要なセクションを拡張し、他のすべてをコピーして、新しいセクションのオフセットとサイズを反映するようにセクション ヘッダーを調整します。

ET_DYNまたはのET_EXEC場合、問題が難しすぎる可能性が非常に高くなります。再配置テーブル、ハッシュ テーブル、プログラム ヘッダーを調整する必要があります。すべての構造の一貫性を維持し、適切に調整します。

于 2013-03-31T17:01:05.257 に答える