2012-04-11 17 views
6

いくつかの情報をELFファイルに追加したいのですが、理想的には、ELFを理解していないか、標準の標準言語ライブラリ以外のツールを使用しなくても、プログラムがこの情報を簡単に読むことができるようにする必要があります。私は単にこのデータをELFファイルの末尾に追加することを考えていました(データの開始を示す何らかのセンチネルを使って、読み込みプログラムがちょうどセンチネルの後ろを追うことができるようにする)が、 ELF仕様に違反することはまずありません。私は、特定のローダがそのような付加データでうまく動作するかどうかには関心がありません。私は、ELF仕様自体が何かを保証しているかどうかを知りたいので、異なるELF準拠のローダーがそれに満足していることを知ることができます。ELFファイルに任意のデータを追加するとELF仕様に違反しますか?

私はこのような質問をする前に求められていることがわかりますが、どちらかこの添付がOKまたは直接的な回答であると仮定:I限り

をELF仕様はここにあります:

私が望むプロパティがその仕様によって明白に許されているかどうかは、いくつかの検索で判断できませんでした。

答えて

7

この仕様では実際には何も言わないので、「後続のデータを持つことは未定義の動作です」と主張できます。一方、ELF仕様では、その期待について明確になっています。 "セクションとセグメントには指定された順序がありません。 ELFヘッダーのみがファイル内の固定位置にあります。 "は、セクションを使用してデータを埋め込むための十分な余地を与えているか、または1つを使わずに行う[これは参照されていないデータです]!

この「データの自由」は、少なくとも1980年代の終わりから利用されています。一般的なアンパックコードスタブが末尾のデータ部分で緩んでいる「自己解凍アーカイブ」を検討してください。

実際、このような暗黙的な機能は、RIFFやPNGなどの実行不可能なデータ形式でも見つけることができます。すべてのフォーマットがこれを許すわけではありません。特に、ヘッダーに格納された固定長ではなく、EOFまでデータが定義されているものがあります。

1つだけあります:(プログラムオペレーティング・システムを解凍し、データを追加することは不可能ですが、を付加することはEXE-ジッパーが両方(無修正)で読めることにつながる何である、あるZIPを考えてみましょう。)このような参照されていないデータを使用することには欠点があります。ファイルを読み込んで保存すると、このデータが失われる可能性があります。

0

新しいセグメントと新しいセクションをELFに追加できるので、ELFファイルに余分なデータを追加することはできますが、 "改善された" ELFで動作するようにツールを用意する(または改善する)必要があります。重大な負担になる可能性があります。そして、あなたがやっていることを非常にうまく文書化することを忘れないでください。

関連する問題