6

ELF ファイルに情報を追加したいのですが、ELF を理解していなくても、通常の標準言語ライブラリ以外のツールを使用していなくても、プログラムがこの情報を簡単に読み取れるようにする必要があります。このデータを ELF ファイルの末尾に単純に追加することを考えていました (データの開始を示すある種のセンチネルを使用して、読み取りプログラムがセンチネルに逆方向にシークできるようにします)。最初に ELF 仕様に違反します。特定のローダーがそのような追加されたデータで正常に動作するかどうかには興味がありません。ELF仕様自体が何かを保証しているかどうかを知りたいので、さまざまなELF準拠のローダーがそれに満足するかどうかを知ることができます.

このような質問が以前に尋ねられたことがあるようですが、この追加が問題ないと仮定するか、直接的な回答がないことを前提としています。

私が知る限り、ELF仕様は次のとおりです。

いくつかの検索では、必要なプロパティがその仕様で明確に許可されているかどうかを判断できませんでした。

4

2 に答える 2

7

仕様はそれについて実際には何も述べていないため、「末尾のデータを持つことは未定義の動作です」と主張することができます。一方、ELF 仕様は、その期待についてかなり明確です。ELF ヘッダーだけがファイル内の固定位置を持っています。」これにより、セクションを使用して、またはセクションを使用せずに、何らかの方法でデータを埋め込むための十分な余地が与えられます [これは参照されていないデータです!]。

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

実際、RIFF や PNG などの実行不可能なデータ形式でも、このような暗黙の機能を見つけることができます。もちろん、すべての形式がこれを許可するわけではありません。特に、データがヘッダーに格納された固定長ではなく、EOF まで実行されるように定義されているもの。(ZIP を考慮してください。データの追加はできませんが、に追加することはできます。これにより、 (変更されていない) 解凍プログラムオペレーティング システムの両方で EXE-ZIP を読み取ることができます。)

このような非参照データの使用には、1 つだけ欠点があります。ファイルを読み込んで保存すると、このデータが失われる可能性があります。

于 2012-04-11T13:36:21.487 に答える
0

ELFファイルにデータを追加しても問題ない場合があります(ELFに新しいセグメントと新しいセクションを追加できるため)が、「改善された」ELFで動作するツールが必要(または改善)であり、これは重要な場合があります。重荷。そして、あなたがしていることを(可能であれば、自由にアクセスできる文書で)非常によく文書化することを忘れないでください。

于 2012-04-11T18:44:28.273 に答える