タグ

binaryに関するjjzakのブックマーク (15)

  • バイナリ解析に関するツラツラ - Dlog 隔離館

    「実行ファイルの解析ってどーやるのっ!」 「解析やってみたいよー」 「どこの学科に行けば勉強できるの?!」 などのような質問をよく受けるので、ひとつの個人的な道筋を書いてみます。 とりあえず今回は実行ファイル解析編。アセンブリ楽しいよアセンブリ。 (最後の方には実行ファイルに限らず、いろいろな解析系のリンクをまとめています。) 最初の入門 なんだかんだで一番分かりやすくて「解析してる!」っていう実感が沸きやすそうなのは、crackmeかなあと思うのです。 解析魔法少女美咲ちゃん マジカル・オープン! このは実にいやらしいすばらしい・・・入門の入門と言えようぞ・・・((( 実際問題とても分かりやすく、「16進数って何?」というレベルの人でも頑張れば問題ない構成だと思います。途中までは。 とりあえず半分ぐらいまで熟読してみると、第一歩を踏み出す準備ができるのではないでしょうか。 むしろ、2歩

    バイナリ解析に関するツラツラ - Dlog 隔離館
  • 再入不可能な関数を C で実装する - いやなブログ

    再入不可能な関数を C で実装する 一度実行したら二度と中身を実行できなくなる再入不可能な関数を C で実装してみます。通常、このような関数はシングルトンなどの静的なデータの初期化に使いますが、ここではデータについては考えないことにします。 static 変数をフラグに使う まずは最も単純な方法から見ていきます。次の関数は static 変数をフラグに使って再入を防いでいます。厳密に言えば関数そのものには入ってしまっていますが、ここで気にしないことにします。 void once(void) { static int entered; // 最初は 0 if (entered == 1) { // すでに入ったことがある場合は return; // すぐ出る } entered = 1; // 初回の場合のみ、何かを実行する } この方法はシングルスレッドのプログラムではうまく動きますが、マ

  • elf_exec関数

    elf_exec関数は、引数として渡されるKernelのELF Headerを解析し、Kernelのセグメントやセッションを読込みメモリー上に展開します。 プログラム ヘッダ テーブルを参照して、TEXTまたはDATAセグメントをメモリ上に展開する。 セクション ヘッダ テーブルを参照して、SYMBOLまたはSTRINGテーブルをメモリ上に展開する。 ELFヘッダをメモリ上に展開する。

  • [binary] Hack #5 ELFフォーマット

    via Binary Hack #5 ELF入門 バイナリの勉強。一日目は、ELF入門からやった。 はじめてのバイナリ入門なため間違いがあるかもしれません。 ELF とは実行可能バイナリやオブジェクトファイルなどのフォーマットを規定したフォーマットである。 ELFは先頭4バイトが 0x7F 0x45 0x4C 0x46 のようなマジックナンバーを持つ。 また、fileコマンドで確認できる。 [4296]% file /bin/ls /bin/ls: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.2.0, dynamically linked (uses shared libs), for GNU/Linux 2.2.0, stripped [4297]% file /bin/cat /bi

  • start [strchr.com]

    How to find words by their prefix, which can be mistyped, and sort them by frequency stored with the word. 11 years ago Intel® Architecture Instruction Set Extensions Programming Reference (PDF reference). The description of new instructions in the upcoming Haswell processor, including transactional memory support, hardware random number generator, and 256-bit vector integer operations. The transa

  • アンティーク・アセンブラ~Antique Assembler 記事一覧 | gihyo.jp

    運営元のロゴ Copyright © 2007-2024 All Rights Reserved by Gijutsu-Hyoron Co., Ltd. ページ内容の全部あるいは一部を無断で利用することを禁止します⁠。個別にライセンスが設定されている記事等はそのライセンスに従います。

    アンティーク・アセンブラ~Antique Assembler 記事一覧 | gihyo.jp
  • http://groups.google.co.jp/group/reading-assembly/web/%E3%83%AA%E3%82%BD%E3%83%BC%E3%82%B9?hl=ja

  • オブジェクトファイルについて

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

  • ELF Statifierを使って実行形式ファイルをシステム間で移動する | OSDN Magazine

    共有ライブラリを動的にリンクすると、静的にリンクする場合よりもディスクを効率的に使用できる。それ以上に重要なのは、セキュリティのアップデートを簡単に実施できることだ。しかし、特定のバージョンの動的ライブラリを対象としてコンパイルされた実行形式ファイルは、そのバージョンの共有ライブラリが存在するコンピュータでしか実行できない。Fedora 9が稼働するコンピュータとopenSUSE 11が稼働するコンピュータでは、共有ライブラリのバージョンが微妙に違っていても不思議はない。このようなコンピュータ間で実行形式ファイルをコピーして実行すると、共有ライブラリのバージョンが異なるため正常に動作しないことがある。このような場合は、 ELF Statifier を使って静的リンク版の実行形式ファイルを作成すると、実行時に共有ライブラリを探す代わりに、組み込まれた共有ライブラリが使用される。静的リンク版の

    ELF Statifierを使って実行形式ファイルをシステム間で移動する | OSDN Magazine
  • はじめてのひき - PortableBinaryHacks

    Binary Hacks は GNU/Linux & x86 メインですが、 それ以外だとどんな感じだろうってことを書くところです。 私が個人的にいじってるものですが、 他の人にいじってもらっても問題ありません、 というか知らないことだらけなのでありがたいです。 1. イントロダクション Binary Hack入門 Binary Hack用語の基礎知識 file でファイルの種類をチェックする od でバイナリファイルをダンプする 2. オブジェクトファイルHack ELF 入門 静的ライブラリと共有ライブラリ ldd で共有ライブラリの依存関係をチェックする readelf で ELF ファイルの情報を表示する objdump でオブジェクトファイルをダンプする objdump でオブジェクトファイルを逆アセンブルする objcopy で実行ファイルにデータを埋め込む nm でオブジェク

  • memcpy 最適化 - kazuhoのメモ置き場

    バイト単位でコピーするアホなコードの方が、勝手にベクトル化される分、gcc 内蔵のヤツより最大3倍高速なんだってwww memcpy() compiled with vectorizing compilers All current compilers for linux should support SSE2 auto-vectorization with #include <string.h> void *(memcpy)(void *restrict b, const void *restrict a, size_t n){ char *s1 = b; const char *s2 = a; for(; 0<n; --n)*s1++ = *s2++; return b; }(中略) x86-64 gcc memcpy() (中略) Linking in a user-compiled

    memcpy 最適化 - kazuhoのメモ置き場
  • バイナリファイルを編集するには

    Linuxでバイナリファイルを編集するにはバイナリエディタを使うのが便利だが、Emacsのバイナリファイル編集モード(Hexlモード)でも編集することができる。 Emacsでバイナリファイルを開くには、[Alt]+[x]キーを押してから「hexl-find-file」と入力して[Enter]キーを押す。すると、

    jjzak
    jjzak 2008/04/29
    emacsでバイナリファイルを編集
  • 8ビットCPUの仮想機械「octopus」をRubyで実装する

    Perl で 8ビット CPU を作る - naoyaのはてなダイアリー octopusをRubyで実装してみました。IO関係、オプションまわりの処理は省略しています。できるだけRubyらしいプログラムを目指してみました。あんまりトリッキーな実装はしていません。 ファイル: octopus3.rb #!/usr/bin/env ruby # -*- compile-command: "ruby -Ks octopus3.rb" -*- class OctopusVm REG_PC = 7 REG_RET = 6 REG_SP = 5 ZFLAG = 1 OCT_INST = { 0 => 'nop', 1 => 'mov', 2 => 'in', 3 => 'out', 4 => 'movi', 5 => 'addi', 6 => 'subi', 7 => 'muli', 8 => 'di

    8ビットCPUの仮想機械「octopus」をRubyで実装する
  • Fenrir's BLog: RubyによるHEXフォーマットの読み書き

    組込み系の開発をしているとROMにデータを書き込むためのバイナリを扱うことになりますが、そのフォーマットの一つにHEXフォーマット(正式名称?)というのがあります。バイナリを0からFまでの16進文字で表したものなのですが、モトローラ仕様とインテル仕様、2つのものがあります。その相互変換をしたいなと思ったのですが、せっかくなのでRubyで組んでみることにしました。 hex_binary_format.rbライブラリを公開します。使い方はHexBinaryFormat.readとHexBinaryFormat.writeを適当に呼べばなんとかなる(笑)と思います。 参考にしたのは、Googleで『HEXフォーマット』をキーワードに検索して引っかかった『HEXファイルフォーマット』と『ROM化ファイルについて』のページです。作成にあたってはRubyのArrayを活用していますが、インデックスが現

  • 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

    jjzak
    jjzak 2006/12/20
    Linux で動く極小 ELF 実行ファイルをつくる
  • 1