読者です 読者をやめる 読者になる 読者になる

ダンプを読めば世界がみえる

dlmallocを読み下し中。
何をしているかは大体解った。
メモリブロックに対して何かを行おうとするプログラムを読み解くとき、
メモリダンプを眺めるということが、
非常に有効だと思った。
プログラムの、メモリの海を見るために必要なのはやはりメモリダンプだ。
メモリをeeとかffとか適当な値で埋めておいて、
ある関数をコールして、
戻ってきたら海を眺める。
そうすると、海には着実な変化が訪れている。
こいつはサイズ(インテジャ)だな、
こいつはアドレスだな。
色んなことがそこには見える。
dlmallocの何が素敵かって、
メモリブロックサイズが4の倍数であることに目を付けて、
0ビット目には一つ前のチャンクの情報の有無を、
1ビット目には使用か未使用かのフラグを設けたことだ。
これはRubyの実装などでも行っていることだけれど、
こうしたことに気が付く人たちは本当に凄い、と思う。
ドキドキするね、本当に。


しかし、
dlmallocについてググってみて
本当に情報が少ない。
うーん。
いえ、malloc.cに英語ではあるんです。
でも、それでは使える人は少ないんです。


オススメは革命の日々さんの、
カーネル読書会でのglibcの実装のお話。
http://mkosaki.blog46.fc2.com/blog-entry-241.html
これを読むとdlmallocの難解な部分が解りますよー。


そんな中で、最近みつけた、
C/C++のセキュアコーディングのPDFも非常に面白かったです。
http://www.jpcert.or.jp/research/2009/3_DynamicMemory.pdf
みんなこれを読んでもっとmallocと友達になろうぜ!!


様々な環境で使えるように
dlmallocには様々なオプションがあるのですが、
日本語でまとまった資料ってないんですよね。
こういうの纏めたら嬉しかったりするのかしらん、と思った最近です。