11

elf ファイル ヘッダーに関する簡単な質問ですが、elf ヘッダーのフィールドを追加/変更する方法について役立つ情報が見つかりません。マジック ナンバーを変更したり、ビルドの日付をヘッダーに追加したり、おそらく他にもいくつかできるようにしたいと考えています。

私が理解しているように、リンカーはヘッダー情報を作成しますが、それを参照する LD スクリプトには何も表示されません (ただし、ld スクリプトは初めてです)。

私は gcc を使用しており、ARM 用にビルドしています。

ありがとう!

アップデート:

  • わかりました多分私の最初の質問は、リンク時にヘッダーファイルを作成/編集することは可能ですか?
4

9 に答える 9

10

これを実行できるリンカー スクリプト コマンドはわかりませんが、objcopyコマンドを使用してリンク後に実行できます。--add-sectionオプションを使用して、任意のデータを含むセクションを ELF ファイルに追加できます。ELF ヘッダーに必要なフィールドが含まれていない場合は、新しいセクションを作成してそこに追加します。

于 2008-10-24T16:14:28.700 に答える
7

このリンク (十代のエルフ バイナリ)は別の質問に対する誰かの回答ですが、ELF ヘッダーの複雑さについて詳しく説明しています。

于 2008-10-26T10:49:12.323 に答える
2

私は、十分に複雑な ld スクリプトがあなたの望むことを実行できると確信しています。しかし、方法がわかりません。

一方、elfshは、エルフ オブジェクトに対してあらゆる種類の操作を簡単に行うことができるので、ぜひ試してみてください。

于 2008-10-24T16:50:07.880 に答える
0

freshmeatで死んだプロジェクトであるlibmelfを使用できる可能性がありますが、LOPIから入手できます-http ://www.ipd.bth.se/ska/lopi.html

それ以外の場合は、仕様を取得して、ヘッダーを自分で(上書き)書き込むことができます。

于 2008-10-24T12:55:13.720 に答える
0

私はしばらくこれを行っていませんが、任意のデータを実行可能ファイルに追加することはできませんか? 常に固定サイズのデータ​​を追加する場合、追加したものを回復するのは簡単です。可変サイズはそれほど難しくありません。おそらく、elf ヘッダーをいじって実行可能ファイルを台無しにするよりも簡単です。

于 2008-10-24T13:00:12.587 に答える
0

Solaris ではelfeditを使用できますが、本当に Linux のソリューションを求めていると思います。Linux は Unix ではない :P

于 2008-10-24T16:53:52.957 に答える
0

私は本を​​読み終えていませんでしたが、John Levine による iirc Linkers and Loadersには、これを行うために必要な詳細がありました。

于 2008-10-25T00:08:12.440 に答える
-1

Linux コンソールの場合:

$ 男 ld

$ ld --verbose

HTH

于 2008-10-28T12:30:53.960 に答える