タグ

ブックマーク / shinh.hatenablog.com (7)

  • binutils にパッチ投げてみた話 - 兼雑記

    Mach-O バイナリをコード見ながら逆アセンブルする方法が無いってのがずっと困っていました。つまり linux でよくやっている objdump -S みたいなことがやりたかったんですが、 objdump -S は Mach-O に対しては動かないし、 otool -tvV もソースコードは見せてくれないし、っていう。でまぁ一念発起して binutils というか libbfd をいじってみたのでした。 今回はじめて FSF なソフトに patch 投げてみて、まぁ特に著作権の処理とかどのくらい時間かかるもんなのかよくわからなくて、こちらのかた以外にあまり体験談的なのが見つからなかったので、なんか書いていみようかと。 とりあえず適当にパッチ書き。経験上デカいパッチいきなり投げるヤツはうざがられるので、なんか小さめな目標で…ってことで objdump -S を .o に対してだけ動くような

    binutils にパッチ投げてみた話 - 兼雑記
    shmz
    shmz 2012/01/06
  • 2011-08-01 - valgrind 論文読んだメモ - 兼雑記

    時々 valgrind はオーパーツだとかそういう主張をしてたりします。コードとか論文とかチラ見くらいはしてたのですが、まあちゃんと眺めてみたのでメモ。 Valgrind: A Framework for Heavyweight Dynamic Binary Instrumentation http://valgrind.org/docs/valgrind2007.pdf 1. イントロ 1.1 DBA and DBI Dynamic binary analysis って種類のツールがあるんですよ、と紹介。その手のツールは Dynamic binary instrumentation で実装されてることが多いですよ、と。つまり実行時にコード埋めるって話。 DBI ってのはすげー汎用性あるんですけどイマイチ注目されてなくてよろしくない、と。 1.2 Shadow Value Tools an

    2011-08-01 - valgrind 論文読んだメモ - 兼雑記
    shmz
    shmz 2011/08/02
  • Rubygrind - 兼雑記

    あんま深く考えず valgrind を Ruby の head のテストに適用してみたところ、結構もにょもにょ漏れてるもんだなぁと気付いたので、いくつか修正してみたりしたのですが、その時案外困るのが、リークする最小のコードが簡単に作れない、ってことでした。 valgrind は C 言語的にどこで malloc を呼んだかは教えてくれるものの、 Ruby コードでどこだったかは教えてくれないからです。修正はできたけど具体的にどこで漏れてるかはよくわからん、ということさえありました。 というわけで、 Ruby 的にどこで漏れたかを教えてくれる valgrind 用の tool 、 Rubygrind を作ってみました。 http://shinh.skr.jp/binary/rmemcheck.tgz これを valgrind-3.3.1 のディレクトリに展開して、 > diff -u con

    Rubygrind - 兼雑記
    shmz
    shmz 2008/08/17
  • [Program][Bin] valgrind で main 奪う - 兼雑記

    ことほどさように main は全人類の至宝 LD_PRELOAD をもってしても簡単に奪えないということは、 main 蹂躙厨の間では有名な事実なのですが、 valgrind 使うと割に簡単なことに気付きました。 いつも通り Hello, world を書きます。 #include <stdio.h> int main() { puts("('-') Hello, world!"); } で実行。 > ./a.out ('-') Hello, world!平和です。こんな時代が続けば良かったのに! 不審なコードを書きます。 #include <stdio.h> void _vgrZU_Za_main() { puts("('-') ku ku ku ..."); } 主にシンボル名が不審です。さて実行。 > LD_PRELOAD=./hook_main.so valgrind --tool

    [Program][Bin] valgrind で main 奪う - 兼雑記
    shmz
    shmz 2008/08/16
  • [Program][Bin] Hello, world! 統計 - 兼雑記

    なんかまず kernel はどうやったもんかなと思ったのでやめておくことに。端末とかも追わないので不完全ではありますが、趣旨としては、以下の非常に高度な技術が詰め込まれたコードがどれだけ大変なことになって実行されているかというようなことを肌で感じたいなと。数字を肌で感じるのは割と大事だと思うんですよね。 #include <stdio.h> int main() { puts("Hello, world!"); } このコードをデバッグ情報つきでコンパイルしたところ、 8812Bytes というところのようでした。ゴルフ的観点においてかなり大規模なコードと言えます。いやまぁそういうのはどうでもいいとして。 でまぁ計測結果によると、ユーザランドでの総実行ステップ数は 92165 、実行したバイト数はループなんかの重複を無視して空間的な意味で考えると 29700 Bytes で、ループなどでの

    [Program][Bin] Hello, world! 統計 - 兼雑記
    shmz
    shmz 2008/05/17
  • 2008-03-22 - 兼雑記 [Misc] gold

    が出たらしいのでインストールしてみた。 http://sourceware.org/ml/binutils/2008-03/msg00162.html gold はたぶん Google 内で GNU binutils に突っ込む予定で開発されてたリンカで特徴は ELF 以外を忘れたので速いっていう。でまぁ binutils に実際入ってるから cvs co の仕方 とか見てインストールしてみたら入った。 とりあえず sdmkun とかリンクしてみた。 GNU ld: /usr/bin/ld --eh-frame-hdr -m elf_x86_64 --hash-style=both -dynamic-linker - 0.12s user 0.07s system 93% cpu 0.206 totalgold: /usr/local/bin/ld --eh-frame-hdr -m el

    2008-03-22 - 兼雑記 [Misc] gold
    shmz
    shmz 2008/03/22
  • 2008-01-03 - SSL - 兼雑記

    ずっとある程度まとめて勉強したことが無かった、 SSL について軽く調べてみた。あんま深く調べてないので真に受けんで下さい。

    2008-01-03 - SSL - 兼雑記
    shmz
    shmz 2008/01/05
  • 1