タグ

elfに関するTAKESAKOのブックマーク (16)

  • ERESI

    The ERESI Reverse Engineering Software Interface We moved our project from trac/svn to github! wiki issues/tickets contact Copyright ERESI Team (C) 2001-2016

  • 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;

    TAKESAKO
    TAKESAKO 2009/04/02
  • GCCが出力した小さなバイナリからsection headerを除去したりする話 - memologue

    Binary Hacks に、「インラインアセンブラをちょっとだけ使って、gccに小さなhello worldバイナリを出力させる」というネタを書きました(Hack #25: glibcを使わないでHello Worldを書く)。その補足という訳でもないのですが、先日shinh先生と焼肉などべておりましたところ、セクションヘッダを削ってサイズ縮小する話は紹介してもよかったんじゃまいかとツッコミをいただきましたので、(あまり親切な記述ではないですが)書いてみます。「gccにコードを吐かせる」「アセンブリ言語部分にあまり凝らない」という条件で、132バイトまで削ります(書籍だと488バイト)。 えー、hello world なソースコード(末尾に添付)を次のようにコンパイルして*1、 % gcc -m32 -Os -fno-builtin -fomit-frame-pointer -fno-

    GCCが出力した小さなバイナリからsection headerを除去したりする話 - memologue
  • http://docs.sun.com/app/docs/doc/819-0391/chapter6-43405?l=ja&a=view

  • ELF Format

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

    TAKESAKO
    TAKESAKO 2009/04/02
    Elf64_Quarter 符号無しクォータワードフィールド は 2 byte
  • 75B ELF @ FreeBSD - 兼雑記

    昨日は b2con でした。発表者の皆さんおつかれさまでした。とても楽しかったです。 dankogaiさん が FreeBSD で ELF ゴルフは制約が多いと教えてくださったのでやってみました。確かに制約は厳しい感じでした。 75Byte 。 http://shinh.skr.jp/binary/hello_freebsd4.asm 環境は以下の通り。要するにさくらサバ。 hamaji@www491 ~> uname -srm FreeBSD 4.10-RELEASE-p24r1 i386適当に説明と備忘。 BITS 32 org 0x00000000 db 0x7F ; e_ident db "ELF" ; ここが必須になっている。 ; 32bit(1), 2の補数リトルエンディアン(1), ELFバージョン(1), FreeBSD(9) ; 余計なことをっ…と思うけど、 OS のタイ

    75B ELF @ FreeBSD - 兼雑記
  • TAKESAKO @ Yet another Cybozu Labs: /. Happy Binary Day ! /.

    スラッシュドットJPによると、日11月11日はバイナリデーだそうです。 バイナリデーを祝うべく、/.Jにもちょっとしたイースターエッグを仕込んでおきました。 /.Jのとある場所に、日のバイナリ/ハッカー界の著名人の方々から頂戴した祝賀 コメントを掲載しています。/.J読者皆様、ぜひお探しの上一緒にバイナリデーを お祝いいただけるとうれしいです。 とのことで、小生も 祝賀コメントとネタのバイナリファイルを寄稿いたしました。 ※ 11/12 8:22 追記 時効ということでイースターエッグのURLを直リンしました ■ 0x457.html (0x457 = 1111) HTML EBCDIC JavaScript Linux ELF x86 Golf Polyglot です。 (1) Safari3 で表示した結果 (2) IE7 で表示した結果 (IE6では表示できません) 例のファイル

  • はじめてのひき - FrontPage

    Generated by Hiki 0.8.7 (2007-06-24). Powered by Ruby 1.8.7 (2013-06-27). Founded by はじめてのひき.

    TAKESAKO
    TAKESAKO 2008/05/31
    オライリーSucksシリーズ吹いたwww
  • ウノウラボ Unoh Labs: LD_PRELOADを使って任意の関数呼び出しにフックしてみる

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

  • http://ja.doukaku.org/comment/3178/

    TAKESAKO
    TAKESAKO 2007/09/27
    【プログラムというのは、マシン語を出力して初めて「生成できる」と言うのです。】
  • 最小 Hello の比較とか - 兼雑記

    http://www.dodgson.org/omo/t/?date=20061213#p01 で "Size Is Everything" が日語訳がされていて素晴らしいです。 [SIE] http://www.hyuki.com/yukiwiki/wiki.cgi?WhirlwindTutorialOnCreatingReallyTeensyElfExecutablesForLinux まぁみんな最小だ最小だと言うので簡単に比較を。 FSIJ で他はどうだって話しなかったし。比べるべきはたぶん以下のあたりと。 [KIK] http://d.hatena.ne.jp/kikx/20061111 [TINY] http://www.muppetlabs.com/~breadbox/software/tiny/ 適当に名前を [] でふっておきました。 要は実行ファイルサイズをほぼ規定する

    最小 Hello の比較とか - 兼雑記
    TAKESAKO
    TAKESAKO 2007/05/17
    おおお、もうちょっと前にこのページを読んでいれば...
  • WhirlwindTutorialOnCreatingReallyTeensyElfExecutablesForLinux -

    WhirlwindTutorialOnCreatingReallyTeensyElfExecutablesForLinux - 目次 Linux で動く極小 ELF 実行ファイルをつくる怒涛のチュートリアル (あるいは "Size Is Everything") コメント 以下の文章の日語訳です: http://www.muppetlabs.com/~breadbox/software/tiny/teensy.html gcc の info の日語は以下のページから拝借しました: http://www.asahi-net.or.jp/~wg5k-ickw/html/online/gcc-2.95.2/gcc_2.html#SEC13 Linux で動く極小 ELF 実行ファイルをつくる怒涛のチュートリアル (あるいは "Size Is Everything") She studied

    TAKESAKO
    TAKESAKO 2007/05/17
    これはELF Golfの際に大変参考になる資料
  • 2006-11-11

    BITS 32 ORG 0 DB 0x7F entry: inc ebp dec esp inc esi mov dl, 14 mov cl, hello xor dword [ecx], 0x6C4D6549 inc ebx push dword 0x00030002 mov al, 4 int 0x80 add [eax], eax add [eax], al sbb [eax], al add [eax], al sbb [eax], al add [eax], al xchg eax, esi dec ebx int 0x80 DD 0x00210000-0x18 hello: DD 0x00210001 DB 'o, world!', 10To compile this program, you need nasm. nasm -f bin -o tiny-hello.bin t

    2006-11-11
    TAKESAKO
    TAKESAKO 2007/05/14
    世界最小の ELF x86 バイナリ (Hello world!)
  • はじめてのにき(2006-11-09)

    _ hello76 NASMも触れんとなぁ、ということで Hello world! 76B を移植。 さらにゴルフしよう ; hello76.asm BITS 32 org 0x00000000 db 0x7F, "ELF" ; e_ident db "Hello world!" dw 2 ; e_type dw 3 ; e_machine _start: mov byte [EDI+0x10], 0xa ; e_version ; set "\n" dd _start ; e_entry ; fall through! dd phdr - $$ ; e_phoff lea EDX, [ECX+0xd] ; e_shoff lea EAX, [ECX+0x4] ; e_flags mov ECX, EAX jmp short label1 ; e_ehsize dw 32 ; e_phen

    TAKESAKO
    TAKESAKO 2007/05/14
    ELF Golfで参考になるコード(わかりやすい)
  • The Teensy Files

    This page is a complete guide to everything I've written about creating teensy ELF executable for Linux. Take a look at your /bin directory: how big is the smallest ELF executable in there? Try writing the smallest hello-world program you can. Can you get it under, say, 1K? This is precisely what I set out to do one day, and I ended up with a minor obsession over creating the smallest possible exe

    TAKESAKO
    TAKESAKO 2007/05/14
    これは芸術
  • Wataru's memo(2007-04-11)

    ● [Linux][Writing] 世界一単純な実行ファイルフォーマット binfmt_flat Computer Architecture Series 第二作のために、日々素材作りを進めているのですが、この作業の間に "binfmt_flat" というオタッキーなモジュールが誕生しました。今日は、このモジュールを使った "Hello golf" をご紹介しましょう(注: 昨年一世を風靡した ELF golf ではありませんので、あしからず)。 初学者の理解を阻む複雑な ELF 皆さんご存じの通り、PC-UNIX 上における標準のオブジェクトファイルフォーマットは ELF (Executable and Linking Format) ですが、このフォーマットは高機能を追求しているため、内部はかなり複雑な作りになっています。 実は、当初 Computer Architecture Se

  • 1