elf

再配置アドレスの計算頻度が非常に低い。
elf

再配置アドレスの計算頻度が非常に低い。

取締役について学んでいます。ELFリファレンスそしてこのブログところで、前の住所を計算できません。 タイプの2つのファイルAがあり、接続中に名前付き部分をマージしたいとします。これらの部分には、ファイル内のシンボルとファイル内のシンボルが含まれます。再配置エントリと再配置オフセットがあり、リンカが再配置アドレスの競合を回避する方法を理解していない場合:コンパイル中にこれらのファイルが互いに不明であるため、これらのオフセットは同じであると仮定します。BET_RELSSAASBBA.elfB.elfA.elfB.elf ET_EXECの再配置テーブルの目的は...

Admin

aarch64 ELF実行可能ファイルがx86_64システムで実行されるのはなぜですか?
elf

aarch64 ELF実行可能ファイルがx86_64システムで実行されるのはなぜですか?

私はRaspberry Pi 3で単純な「Hello World」CプログラムをコンパイルしてAMD64ノートブックに転送しました。好奇心が強いのに実行されるとは思わなかったが、次のように実行された。 $ uname -a Linux 15ud490-gx76k 6.5.0-25-generic #25~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Tue Feb 20 16:09:15 UTC 2 x86_64 x86_64 x86_64 GNU/Linux $ file hello64 hello64: ELF 64-bit L...

Admin

Linuxが$ ORIGINを使用してローダー(通訳者とも呼ばれる)を見つけることができない理由
elf

Linuxが$ ORIGINを使用してローダー(通訳者とも呼ばれる)を見つけることができない理由

Linuxでバイナリをコンパイルするときに、共有オブジェクトを見つける場所を動的ローダーに伝えるRPATHというものがあります。 RPATHについて私が好きなのは、このプロパティを使用して、必要に応じてローダーが実行可能ファイルへの.soパス$ORIGINからそのファイルを検索する特定のファイルを提供できることです。したがって、私のバイナリにRPATHがある場合、$ORIGIN/.ローダーはそのディレクトリから検索するため、ソフトウェアの展開に役立ちます。 問題があります。ローダー自体をハードコードする必要があるため、すべての依存関係を出荷できるとしても、ロ...

Admin

ELFの2つの部分のオフセットが同じであるのはなぜですか?
elf

ELFの2つの部分のオフセットが同じであるのはなぜですか?

最近、私はLinux上で少し疑わしいELFファイルを2つ見つけました。 "/bin/ls" ファイルを例にして readelf を実行すると、次のようになります。 オフセット0x213b8で始まる27個のセクションヘッダーがあります。 Section Headers: [Nr] Name Type Address Off Size ES Flg Lk Inf Al [ 0] NULL 0000000000000000...

Admin

XCOFFバイナリエディタ
elf

XCOFFバイナリエディタ

ビルドされたXCOFFファイルを編集するツールはありますか? XCOFFとリンクするときに-bipathフラグが実行するように、ビルド後にいくつかの依存関係へのパスを指定したいと思います。私はAIXとXCOFFだけのためのpatchelfのようなものを探しています。私が見つけたhttps://www.ibm.com/docs/en/aix/7.2?topic=l-ldedit-command、しかしできないようです ...

Admin

一部のAndroidエルフファイルにインタプリタパスがあるのはなぜですか?
elf

一部のAndroidエルフファイルにインタプリタパスがあるのはなぜですか?

Androidのelfファイル形式を学んでいますが、一部のelfファイルはプログラムヘッダのインタプリタパスを介してローダを指定できることがわかりました。しかし、私がAndroid Studioを介して直接作成したelfテストファイルにはこのプロパティはありません。その理由は何ですか? インタプリタパスを持つelfファイルに独自のローダリンカを指定することで、より速いelfデバッグ時間を得ることができますが、現在多くのファイルにインタプリタパスがありません。他のオプションがありますか? ...

Admin

ld-linux.soを使用してプログラムを実行し、patchelfを使用してインタプリタを変更すると他の結果が表示されるのはなぜですか?
elf

ld-linux.soを使用してプログラムを実行し、patchelfを使用してインタプリタを変更すると他の結果が表示されるのはなぜですか?

ld + --library-pathを使ってプログラムを実行することとpatchelfを使ってローダを変更することの違いは何ですか? これを説明するために、以下は現状のまま実行されないバイナリです。それはおそらく、最新バージョンのライブラリがないからです。 $ ~/DOWNLOADS/APPS/magick /tmp/.mount_magickXiWzgy/usr/bin/magick: /lib/x86_64-linux-gnu/libm.so.6: version `GLIBC_2.29' not found (required by /tmp/.m...

Admin

32ビットプログラムが3GBアドレス空間モードでロードされるのはなぜですか?
elf

32ビットプログラムが3GBアドレス空間モードでロードされるのはなぜですか?

Manjaro Linux(カーネル6.6.8)がADDR_LIMIT_3GBセットで32ビット実行可能ファイルをロードすることを確認しました。または次のようになりますsetarch -B --3g。 しかし、以前はそうではなく、32ビットプログラムが--4Gモードで起動されたことを明らかに覚えています。 カーネルにハードコードされていますか?それとも設定可能な動作ですか?どのように変更できますか? ...

Admin

ELF実行ファイルにインタプリタパスがハードコードされているのはなぜですか?
elf

ELF実行ファイルにインタプリタパスがハードコードされているのはなぜですか?

(これは苦情ではなく一般的な質問です。これについて良い説明があるかもしれません。) コンパイルされた実行可能ファイルの場合、オペレーティングシステムが決定するのではなく、インタプリタパスをバイナリにハードコードするのはなぜですか?つまり、インタプリタは実行可能ファイルの形式(ELFなど)やアーキテクチャ(x86-64)から派生してはなりません。 通訳者パスは、次の実行時に表示されますfile /path/to/some-executable。 some-executable: ELF 64-bit LSB executable, x86-64, versio...

Admin

FreeBSDカーネルをELF形式で起動する必要がありますか、またはzImage形式で起動する必要がありますか?どのように?
elf

FreeBSDカーネルをELF形式で起動する必要がありますか、またはzImage形式で起動する必要がありますか?どのように?

Arm(32ビット)ChromebookでDebian 12を仮想化しました。ホスト/ dom0にはDevuan 5を、ゲスト/ domUにはDebian 12を選択しました。それは非常にうまく動作します。しかし、私たちの目標は異なります。私たちはFreeBSDをdomUに仮想化したいと思います。 FreeBSD armゲスト用に動作するXen PVネットワークドライバを提供できますか?私はJulien GrallがXenドライバをArmのFreeBSDに移植したことを発見しました。 Julienの仕事がFreeBSDのアップストリームで承認されているのだろ...

Admin

「H」/72/0x48が実行可能ファイルで2番目に一般的なバイトであるのはなぜですか?
elf

「H」/72/0x48が実行可能ファイルで2番目に一般的なバイトであるのはなぜですか?

(この質問が72点なら投票しないでください!) 私はこれを実行しました: cat /usr/bin/* | perl -ne 'map {$a{$_}++} split//; END{print map { "$a{$_}\t$_\n" } keys %a}' | grep --text . | sort -n | plotpipe --log y {1} そしてこれを得ました: (代数的なy軸を使用しても依然として指数関数的に見えます!上と下の間の距離は100倍以上大きくなります。) 数字を見てください: : 31919597 ^...

Admin

ELFセグメント間マッピングとRWX権限
elf

ELFセグメント間マッピングとRWX権限

私はgccを使ってLinux上に構築された古典的な「Hello world」Cプログラムを持っています。ビルドされたバイナリのセグメントとセクションは次のとおりです。 Program Headers: Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align PHDR 0x000040 0x0000000000000040 0x0000000000000040 0x0001f8 0x0001f8 R 0x8...

Admin

POWER CPUでppc64le Linuxカーネルを起動するときにリトルエンディアン状態を設定するにはどうすればよいですか?
elf

POWER CPUでppc64le Linuxカーネルを起動するときにリトルエンディアン状態を設定するにはどうすればよいですか?

ppc64le Linuxについて調べてきましたが、POWER CPUがリトルエンディアンにどのように設定されているのかわかりません。私が理解したように、マシンとCPUの状態はファームウェアでデフォルトでビッグエンディアンモードで動作します。しかし、カーネルを起動するときに予想されるエンディアンに切り替える責任は何ですか? 詳細を扱わずにPOWER / PPCからカーネルを起動する方法は、次のようにまとめられています。 ファームウェアは、マシンがマシンの状態をリセットしてリセットしたときに実行されます。 ファームウェアはブートローダをロードして制御を転送し...

Admin

同じバイナリと異なる権限、どのように可能ですか?
elf

同じバイナリと異なる権限、どのように可能ですか?

pwn ctfをして奇妙な状況を見つけました。 ctf にはバイナリとサーバーが含まれます。与えられたelf 64ビットがあります。 checksec 出力 (同じローカルおよびサーバー) Arch: amd64-64-little RELRO: Partial RELRO Stack: No canary found NX: NX disabled PIE: No PIE (0x400000) RWX: Has RWX segments ここでは、RWXセグメントはありますが、NXビットはありません。 ...

Admin