タグ

関連タグで絞り込む (2)

タグの絞り込みを解除

elfに関するnamikisterのブックマーク (4)

  • hello worldなELFバイナリを出力するCのプログラム(の一番単純な奴) - memologue

    こちらの記事(Binary HacksのHack #25の軽い補足)は、「インラインアセンブラをちょっとだけ使って、gccに小さなhello worldバイナリを出力させる」というお話でした。一方、小さいHello Worldが欲しかったら、gccにELF実行バイナリを出力させるのではなく、「自力でELFを吐くCのコードを書いてしまう」手もあります。ご利用のCPUのアセンブリ言語がわかるのでしたら、こっちの方法でHello Worldするのも悪くないですね。こちらの方法でしたら、「急にbrainf*ckのコンパイラが書きたくなった*1」などの非常によくあるシチュエーションにも応用が効きますしー。 ELF直書きって、なんかすごく難しいように思われていると思うんですが(いや、DSO吐いたりするのは実際面倒ですが)、hello worldくらいだったらなんてことないです。次の4つの処理を順に行え

    hello worldなELFバイナリを出力するCのプログラム(の一番単純な奴) - memologue
  • オブジェクトファイルについて

    はじめに Binary Hacks の校正大会にて、あーセクションの話が少し説明不足で不親切だね、っていう話が出ました。あった方がいいかな、と思ったので、宣伝を兼ねて、ここに私が知っていることを書いておきます。 内容としては、 Binary Hacks に比べてかなりいい加減に書いています。例えば調べものは一切せずに書きます。著者の中で最もいい加減な私がよりもいい加減に書いたということで、 Binary Hacks の全ての文章はこれよりはレベルが上、というようなサンプルだと思って下さい。宣伝を兼ねるということで、これ単体ではフォローせずに Binary Hacks のここを見てね、というポインタだけ示す部分が多いです。『』で囲まれた文字列は Binary Hacks の中のハック名に対応しています。 書いてる最中なので、気が向いたら内容を追加します。 詳しい参考文献としては Linke

  • 実行回数を記憶している実行ファイル - 兼雑記

    http://d.hatena.ne.jp/alohakun/20061113 を見てて、騙されてはいけない! id:yupo5656 さんは僕らの自由を奪う詐欺師だっ…とか思ったので適当に。 ELFヘッダは e_ident という 16Byte のメンバから始まっています。ここは magic を記録する場所です。 magic については Binary Hacks #4 見てね☆とかそんな感じで。 でまぁ、最初の 4Byte 、 "\x7fELF" までは、無いと動きませんし、しぶしぶつけるわけですが、残りの 12Byte は "Hello world\n" を埋めるための空間です…と思ってたらなんか プロゴルファーは実行コード埋めてた というようなのが今までの粗すぎる粗筋なのですが、たしか高林さんがファイルのパーミッションか時刻情報あたりでカウンタ実現してたなぁ(でもURL見つからないな

    実行回数を記憶している実行ファイル - 兼雑記
  • ELF Format

    a.out形式はUNIXで長い間使われてきたが、Unix System Vの登場時に、クロスコンパイルや動的リンクなどに、対応するためにより良い形式が必要だとして、ELF(Executable and Linking Format)が作られました。 ELFは、再配置可可能オブジェクト・実行可能・共有オブジェクト・コアという4種類のファイルがあます。 再配置可可能オブジェクト 再配置可可能ファイルは、アセンブラやコンパイラが作成する、オブジェクトファイル 実行可能 実行可能は、再配置が全て完了し、シンボルも解決してある(実行時に解決される、共有ライブラリのシンボルは除く) "lsコマンド"のような実行可能なファイル 共有オブジェクト リンカ用のシンボル情報と実行時に使われるコードを格納する、共有ライブラリ等のファイル コア ELF ファイルフォーマットを使っている実行可能ファイルはELFヘッ

  • 1