タグ

ELFに関するkgbuのブックマーク (2)

  • ウノウラボ Unoh Labs: LD_PRELOADを使って任意の関数呼び出しにフックしてみる

    尾藤正人(a.k.a BTO)です 先日の社内勉強会のLTでLD_PRELOADについて簡単にやってみました。 LD_PRELOADって? 環境変数$LD_PRELOADを使うと他のライブラリの読み込みの前に任意のライブラリを先に読み込ませることができます。 実行プログラムの形式にELF形式を採用しているOSで使うことができます。 Linuxであれば問題なく使用できるはずです。 何ができるのか プログラムを変更することなく、任意の関数を上書きしたり、任意の関数にフックすることができます。 libhookwriteを作ってみた 簡単なサンプルプログラムとしてlibhookwriteというのを作ってみました。 libhookwriteはその名の通りwrite(2)にフックをかけることができます。 といってもできることは限られていてファイルのタイムスタンプの更新か、任意のプログラムをsh

    kgbu
    kgbu 2008/04/08
    プログラムがロードする前にfookできる機能を使ったサンプル。chrootの真似事みたいなこともできる、、って、ほとんど気分はkernel rootkitですがな(笑
  • ELF/実行時の話 - osdev-j (MMA)

    プログラムヘッダテーブルの各エントリ 32bit struct Elf32_Phdr { Elf32_Word p_type; /* エントリのタイプ */ Elf32_Off p_offset; /* 対応するセグメントのファイル先頭からのオフセット */ Elf32_Addr p_vaddr; /* メモリ上でのセグメントの第一バイトの仮想アドレス */ Elf32_Addr p_paddr; /* 物理番地指定が適切なシステムの為に予約。 */ Elf32_Word p_filesz; /* 対応するセグメントのファイルでのサイズ。0も可。 */ Elf32_Word p_memsz; /* 対応するセグメントのメモリ上に展開された時のサイズ。0も可。 */ Elf32_Word p_flags; /* 対応するセグメントに適切なフラグ。 */ Elf32_Word p_align;

  • 1