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