Hatena::ブログ(Diary)

糸且之入E∃言己足亦土也

2006-11-20

[]PE Golf (2)

だと、PEでは最小と思われる97バイトで出力可能。

nasm用ソースhttps://github.com/firewood/test/blob/master/hello.asm

ほぼ、k.inaba氏のとTiny PEとをマージしただけですが。

がんばってみたけどPEヘッダはオフセット4に入れるのが最小値のようで、Win32形式のままでは97バイト以下には削れない。別のCOFF形式なら削れるのかも。MessageBoxの方が小さいと思ってたけど、kernel32.dllだけは常にロードされている(kernel32.dll以外はimportしないとロードされない)ので、コンソールの方が小さくなりうると。

SizeOfOptionalHeaderは、サイズというよりもIMAGE_SECTION_HEADERへのオフセットを示しているので重ねられるということをようやく理解しました。

WriteFileの第四引数はNULLでも死なないみたいだけど、ebxを入れてあります。

Win32 APIはstdcallなので、call xxx/retの代わりにjmp xxxにして短くするという技が使えないことに今更ながら気がついたり。

k.inabak.inaba 2006/11/20 09:43 97バイト!WriteFileの第四引数は、手元の環境だと出力をファイルにリダイレクトしたときにNULLだと死んでしまったのでebxにしてました。

firewoodfirewood 2006/11/21 02:19 なるほどー。
97バイト版だと当然ながら?リダイレクト失敗しますね。
58バイト版ELFみたいにドラマティックじゃないしまだまだだなあ。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

Connection: close