130B, x86, Mach-O, MacOSX

http://shinh.skr.jp/obf/bingolf.html

なんかなかったので作っておきました。よくわかってない部分あるのでまだ縮むかも。 Mach-O ヘッダが 28B で 56B の LC_SEGMENT ロードコマンドと 80B の LC_UNIXTHREAD ロードコマンドで、ロードコマンド二つがどっぷり重なってて、その中にコード埋めた感じ。 Hello, world! が入る部分なかったので最後にくっいてる。

とか書いても自分ですらよくわからんので概略を Google Spreadsheets で書いてみた。割と書きやすくて良いな。

http://spreadsheets.google.com/pub?key=pcoKcHzxsAsgfZ3aSIeDdcQ

OSXx86 でのシステムコールの呼び出し規約は FreeBSD 的にスタックに積んで int 0x80 でいいみたい。でしかも Mach-O はレジスタの初期状態を指定する空間があるので、 pusha を使ってみた。まぁそんな感じ。

なにかあれば下記メールアドレスへ。
shinichiro.hamaji _at_ gmail.com
shinichiro.h