ToDo:
たのしかったです
(00:23)
http://xxx.lanl.gov/abs/quant-ph/0611156
http://mixi.jp/view_bbs.pl?id=12447257&comment_count=4&comm_id=42608
暇な時読む系
(00:28)
プレゼンする時、 話者付近は電気消すことが多い。 すると写真とかは青系の色になるし、 たぶん見てる人もちょいと青系に見えてるはず。 となると青系の資料作るのは愚かで、 たぶんうすい黄色とかそっち系の色 (俗に言うWeb2.0色)の方がいい気がした。 今度機会があったらためしてみやう
あと誰もWeb2.0色なんて言ってない
(02:07)
発送済み商品の合計(Amazon.co.jp) 14 \31,750 \1,417 発送済み商品の合計(マーケットプレイス) 2 \5,828 \189 発送済み商品合計 16 \37,578 \1,606 返品数合計 0 \0 \0 返金合計 0 \0 \0 紹介料合計 16 \37,578 \1,606
こんな感じだったみたいです。 ちょうどアマゾンの 1500円チケットもらえる感じみたい。 うち Binary Hacks が 1000円くらい。 なんかどなたか知らんですがありがとうございます。
まぁでももういらんです。 1500 の剰余は換金できないので 他のところでアフィられて下さい。
(03:12)
i@u ~> ls /proc/sys/fs/binfmt_misc cli hello python2.4 register status i@u ~> sudo rm /proc/sys/fs/binfmt_misc/hello rm: cannot remove `/proc/sys/fs/binfmt_misc/hello': Operation not permitted
後戻り不能インターフェース。 これうっかり ELF の magic の挙動変えたらおもしろいよね。
と思ったら消せるみたいだ。
i@u ~> sudo sh -c 'echo -1 > /proc/sys/fs/binfmt_misc/hello' i@u ~> ./hello.exe zsh: exec format error: ./hello.exe
(03:20)
http://www.atmarkit.co.jp/fdotnet/special/powershell02/powershell02_01.html
前聞いたのはこれかぁ。 なんか面白そうだなぁ。
まぁ例のごとくひどいわけだがー
http://slashdot.jp/article.pl?sid=06/11/15/2331202
(11:57)
次からECS
どうでもいいけど例外ほげほげには イマイチ興味が持てないのであった。 たぶんゲームだと main 囲うくらいしか使わないのが 適切だからじゃないかな。 いやいずれにしても例外から本当に復帰しなければならないような シーンがあんまり無いというか。
前書きがカッコよかった。 exportと国会議事堂と国会議事堂の共通点は何か!?
1 vector
いきなり常識レベル
2 sprintf
「strstream が良く見える」感性は理解できない。 個人的には lexical_cast > sprintf > snprintf >> sstream > strstream くらいな気がする。
4 std:: の引数の数の実装依存
知らなかった。 どっかで見ていたかもしれないけど。 いずれにせよ気にしないと思った
5 汎用性十分か。
たぶん簡単。あんまり印象に残らない
7 関数テンプレートを特殊化するな
本能的にしてなかったていうか、 std::mem_fun とかのイディオムが 染み込みすぎてるなバイトで染み付いた。 ちゃんと理由が言語化してあったのは良かったし、 C++ のアレさがよくわかってよい
8 template friend
まさしく2000年くらいのバイトでいろいろやったなぁと懐しく。 まぁこれもC++のアレなところが見えまくりで良い。 結論は全部 public ということでよろしかったでしょうか。
(13:10)
http://blog.linux.org.tw/~jserv/archives/001728.html
見っけたー。
最小 hello にも言及しておられるみたいだ。
http://blog.linux.org.tw/~jserv/archives/001762.html
http://d.hatena.ne.jp/kikx/20061111
もし REFERER で来られたらわかるようにリンクはっとこ
(18:11)
CPU上のコアの数は2年で倍増する
36年ほどで 1MCore とかになるはずです。
50年もすれば CPU 演習で 100MCore CPU とか作ってるんでしょう
(19:21)
自分読むquineはむっちゃ簡単ですね…
i@u ~/wrk/binhacks> la quine_small -rwxr-xr-x 1 i 56 2006-11-16 22:41 quine_small* i@u ~/wrk/binhacks> diff =(./quine_small) quine_small
さらにエグいパターンがあればいいんだけど
(22:42)
と言わず任意の実行ファイル的に 56B が限界に見える…
00 04 08 0C 10 14 18 1C 20 24 28 2C 30
7f 45 4c 46 ** ** ** ** ** ** ** ** ** ** ** ** 02 00 03 00 ** ** ** ** SS SS SS SS PP 00 00 00 ** ** ** ** ** ** ** ** ** ** 20 00 01 00 ** ** ** ** ** **
01 00 00 00 oo oo oo oo VV VV VV VV ** ** ** ** ss ss ss ss mm mm mm mm *7 ** ** ** ** ** ** **
は実行までは行けるんだけど、
e_phoff が 0x14 => p_vaddr が 0x14 => p_offset が 0x14 => e_entry が 0x14 っていう制約で、 phdr の初っ端であるところの 01 00 でコケる気がする。
さて。 p_vaddr が 0x14 => p_offset が 0x14 は本当に絶対必要な条件なのだろうか…
(23:59)
http://knagano.seesaa.net/article/10112354.html
http://firewood.txt-nifty.com/bbc/2005/12/introduction_to.html
(02:17)
http://d.hatena.ne.jp/oto-oto-oto/20061114/1163524011
WA がヒントでした
とかこうなんていうかつまり
http://shinh.skr.jp/m/?date=20061107#p26
をはやくやらないと
(03:19)
こまるなあ、まじで
http://d.hatena.ne.jp/w_o/20061114#p2
> アセ
この push 命令は 68 02 00 03 00 とかそんなんが入ってるわけですが。
> 15分
僕も終わるとは思えません。 なんせ b2con よりでかい。
i@u ~/wrk/b2con> wc b2con.hiki 422 749 7449 b2con.hiki i@u ~/wrk/b2con> wc ../binhacks/fsij.txt 805 1166 10121 ../binhacks/fsij.txt
どどどうしよう
でなんかつまりこのメール投げたら コメントに投稿しつつこっちにも 残るようなシステムが欲しいと言ってるわけですよ。 でそれをまぁ今度作ると
ていうかトラバってその用途に使うんじゃとか
あとなんていうか僕プレゼンとか あんましたことないわけで
時系列全然覚えてなくてびびった
あとなんかとりあえず寝る努力を
(04:11)
(04:16)
(04:38)
(07:41)
http://www.jmuk.org/d/?path=2006/11/14#d14t01
僕なら tr かな
irb(main):002:0> 'abcdefghijklmnopqrstuvwxyz'.tr'kaze','' => "bcdfghijlmnopqrstuvwxy"
(08:28)
http://d.hatena.ne.jp/higepon/20061114/1163517868
http://d.hatena.ne.jp/shinichiro_h/20060829#1156830996
ついでに cc1 を自分で呼び出す練習
i@u ~/test> gcc not_reached.c -Wall not_reached.c: In function 'main': not_reached.c:6: warning: control reaches end of non-void function i@u ~/test> cpp -CC not_reached.c | /usr/lib/gcc/i486-linux-gnu/4.1.2/cc1 -quiet -Wall - not_reached.c: In function 'main': not_reached.c:6: warning: control reaches end of non-void function i@u ~/test> cat not_reached.c | /usr/lib/gcc/i486-linux-gnu/4.1.2/cc1 -quiet -Wall - <stdin>: In function 'main': <stdin>:6: warning: control reaches end of non-void function
うーんどう見ても cc1 は cpp 持ってやがるな
i@u ~/test> /usr/lib/gcc/i486-linux-gnu/4.1.2/cc1 --help |wc 1067 6246 68786
すごい読みごたえありますね!
(11:04)
i@u ~/test> cpp -CC not_reached.c | /usr/lib/gcc/i486-linux-gnu/4.1.2/cc1 -quiet -Wall -fpreprocessed - not_reached.c: In function 'main': not_reached.c:6: warning: control reaches end of non-void function i@u ~/test> cat not_reached.c | /usr/lib/gcc/i486-linux-gnu/4.1.2/cc1 -quiet -Wall -fpreprocessed - <stdin>:1: error: stray '#' in program <stdin>:1: error: expected '=', ',', ';', 'asm' or '__attribute__' before '<' token <stdin>: In function 'main': <stdin>:4: warning: implicit declaration of function 'my_exit' <stdin>:6: warning: control reaches end of non-void function
(11:05)
について思うのは、 これは本当にすごいものだなと思うんだけど、 本当にこれ限界なのかなとかそういう。 エレガントに詰まりすぎてるというかなんというか。 ただ俺じゃあ全然手が出ないんだよなぁ。 今日は repne scasb とか書こうとして 簡単には書けなかった。
とりあえず intel のドキュメントは印刷すること
(02:44)
浜地です。 その件につきましては、今週中になんとかします。 # できれば明日中には…
浜地です。 その件につきましては、今週中になんとかします。 ;; できれば明日中には…
浜地です。 その件につきましては、今週中になんとかします。 (* できれば明日中には… *)
>+++++++[<------->-]<------.++++.>+++[<--->-]<-.>+++[<++++>-]<.>++++++[<------->-]<-.>+++++[<+++++++>-]<.>+++++[<------->-]<.>++++[<+++++>-]<+.>++++[<------>-]<.++.>++++++++++[<++++++++++>-]<+++..>++++++++++[<---------->-]<--.>+++++[<+++++>-]<.>+++++[<----->-]<.>++++++[<+++++++>-]<.>++++[<----->-]<---.>+++++++[<++++++++>-]<.>++++++++[<--------->-]<---.>++++++[<++++++>-]<+++.>++++++[<------>-]<---.>+++++[<++++++>-]<++.>+++++[<------>-]<--.>+++[<+++>-]<.>+++[<--->-]<.>+++++++[<++++++++>-]<++.>+++++++[<-------->-]<--.>++++[<++++>-]<+++.>++++[<---->-]<---.>+++++[<++++++>-]<++++.>+++++[<------>-]<----.>++++++[<+++++++>-]<+.>++++++[<------->-]<----.+.>++++[<++++++>-]<.>++++[<----->-]<---.>+++++[<+++++>-]<+.>++[<---->-]<.>+++[<++++>-]<++.>+++++[<+++++++>-]<.>++++++++[<-------->-]<--.>++++++[<++++++>-]<+++.>++++++[<------>-]<---.>++++++[<++++++>-]<++.>++++++[<------>-]<--.>++++++++[<+++++++++>-]<+++++++.>++++++++[<--------->-]<-------.>++++++[<++++++>-]<.>++++++[<------>-]<.>++[<+++>-! ]<+.>++[<--->-]<-.>++++[<++++>-]<+++.>++++[<---->-]<---.>+++++++[<++++++++>-]<++.>+++++++[<-------->-]<--.>++++[<+++++>-]<+.>++++[<------>-]<.++.>++++++++++[<++++++++++>-]<+++..できれば明日中には…
(03:47)
http://blog.livedoor.jp/dqnplus/archives/850456.html
354の人がすてき。 この人見るとなんとも思ってなかった 転売人が悪い子に見えてくる
(05:58)
普通に SCEI 大丈夫なんか
http://www.nikkansports.com/general/p-gn-tp0-20061112-115959.html
(06:26)
http://www.atdot.net/~ko1/diary/200611.html#d14
メソッドディスパッチじゃなくて 「Ruby の高級な機能」が重いってのは勉強になった。
引数も括弧もないから…とかの例を読んで、 Language Shootout と最下位と引き換えに Code Golf 最上位ならいいじゃない…とか。
ていうか僕の経験では YARV むっちゃはやいんだけど
(12:42)
(17:10)
渋谷ブックファーストで売り切れてるそうなんですが。
http://bsoup.skr.jp/slide/?date=20061114#p01
しかしそういえば生協書籍部には普通に平積みになってた。
(22:13)
http://d.hatena.ne.jp/w_o/20061112#p3
なんか相当に恣意的な例なような。 これ restricted つけようが何しようが 本質的にコンパイラが何しても最適化不能… じゃないのかな。
(01:36)
なぜなら絶対に副作用があるから。
もっとキワどい例ないのかな。 malloc の方は例としてわかりやすいんだけど。
つまり、 本質的に消せるのにコンパイラには消せない ムダなコードの方が適切なんじゃないかなぁみたいな
(01:45)
つーわけで ukai さんと wo さんのオマケで喋ることになりました。 内容は ELF Golf のはずですが プレゼンツール作ってる有様では 何が起きるかどきどき。
(03:01)
116B の綺麗なコード
BITS 32
org 0x00000000
db 0x7F, "ELF" ; e_ident
db 1,1,1,0
dd 0,0
dw 2 ; e_type
dw 3 ; e_machine
dd 1 ; e_version
dd _start ; e_entry
dd phdr - $$ ; e_phoff
dd 0 ; e_shoff
dd 0 ; e_flags
dw 52 ; e_ehsize
dw 32 ; e_phentsize
dw 1 ; e_phnum
dw 0 ; e_shentsize
dw 0 ; e_shnum
dw 0 ; e_shstrndx
phdr: dd 1 ; p_type
dd 0 ; p_offset
dd $$ ; p_vaddr
dd 0 ; p_paddr
dd filesize ; p_filesz
dd filesize ; p_memsz
dd 7 ; p_flags
dd 0 ; p_align
hello: db "Hello world!", 10
_start:
lea EAX, [EDI+4] ; write = 4
inc EBX ; stdout = 1
mov ECX, hello
lea EDX, [EDI+13] ; strlen = 13
int 0x80
xchg EAX, EBX ; exit = 1
xor EBX, EBX ; exit(0)
int 0x80
filesize equ $ - $$
(07:34)
BITS 32
org 0x00000000
db 0x7F, "ELF" ; e_ident
db 1,1,1,0
dd 0,0
dw 2 ; e_type
dw 3 ; e_machine
dd 1 ; e_version
dd _start ; e_entry
dd phdr - $$ ; e_phoff
dd 0 ; e_shoff
dd 0 ; e_flags
dw 52 ; e_ehsize
dw 32 ; e_phentsize
dw 1 ; e_phnum
dw 0 ; e_shentsize
dw 0 ; e_shnum
dw 0 ; e_shstrndx
phdr: dd 1 ; p_type
dd 0 ; p_offset
dd $$ ; p_vaddr
dd 0 ; p_paddr
dd filesize ; p_filesz
dd filesize ; p_memsz
dd 7 ; p_flags
dd 0 ; p_align
hello: db "Hello world!", 10
_start:
mov AL, 4 ; write = 4
inc EBX ; stdout = 1
mov CL, hello
mov DL, 13 ; strlen = 13
int 0x80
xchg EAX, EBX ; exit = 1
xor EBX, EBX ; exit(0)
int 0x80
filesize equ $ - $$
58B を解読してて、 16bit レジスタへの命令を忘れてた マヌケさというか x86 への愛の足りなさに ほげほげとか思いつつ
(09:12)
apt-get というツールがあって、
apt-get install パッケージ名
でインストールするわけだけど、 このパッケージ名にカンで名前を入れて あってるとすごく嬉しい。
だからどうしたと
(19:22)
http://mixi.jp/view_bbs.pl?id=907603&comment_count=16&comm_id=42608
http://plaza.rakuten.co.jp/superman81/
EPR光子対がカギらしい
(20:32)
2800 と 2403 通した。
メモリンク
http://acm.pku.edu.cn/JudgeOnline/status?result=0&user_id=shinh
http://acm.pku.edu.cn/JudgeOnline/status?result=0&user_id=tyos
差分楽に取れねえかなぁ。
(23:48)
http://www.youtube.com/watch?v=rTJhUAwD8Bo
via http://yowaken.dip.jp/tdiary/20061112.html#p02
うーんDSのはこいう回転法則なんだなぁ…
(06:03)
生きていてもいいですかとか わりと微妙なアルバムに思うのだけど…
http://music.hatelabo.jp/track/%E4%B8%AD%E5%B3%B6%E3%81%BF%E3%82%86%E3%81%8D/
まぁネタかなぁ
(07:49)
http://d.hatena.ne.jp/tkng/20061110/1163187966#c
http://www.atdot.net/~ko1/diary/200611.html#d12
おもしろそー
(17:02)
(19:19)
(19:27)
59Bとかできちゃうんだねぇ… 文字列が壊れてるのは fall through の最中に戻すだけで どうせ末尾についてるに違いない。
よって
んー
なんか末尾に入れるとすると、 46B目から詰めはじめたとすると60Bいっちゃうじゃん。
実行時に H 作ってるんかなぁ…
(00:54)
http://acm.pku.edu.cn/JudgeOnline/problem?id=2800
がさっぱり解けない。
TLE 出るならわかるが WA つーのは。
(02:45)
http://0xcc.net/binhacks/quiz.html
問題作らずに自分で楽しんでどうする。
INT_MIN と INT_MAX 見間違えた
それ以外はスタック増加方向と シグナル/スレッドセーフまちがえた。
(03:26)
org 0x00200000 と org 0 では全然 p_*sz への constraint が違う。 0 だとむっちゃきびしい。 まぁ kik さんとこ見てだいたい把握した気はする。
あしたがあるさもうあしただが
(06:14)
http://d.hatena.ne.jp/kikx/20061111
とりあえずうちでも動きましたよーあたりまえですが。
もうちょい自分で考えるかなぁ と思ったけど こりゃー自分で作れる気がしないにゃー というのとオーバーラップの位置考えるのがめんどいので見よかな。
うん見よう。
そこか昨日そこしかないかなぁと 思って寝たんだったけど あんだけヒントもらっちゃそらわかる感。 で、 He まで混じってるので、 こりゃすげえ。 自分でできる感じ全くしねええええええええええ
x86 つーか任意の機械語全然知らんなぁ…
(15:52)
----------
/ \
/ REST \
/ IN \
/ PEACE \
/ \
| shinh |
| |
| yaruki nai |
| dakara shinda |
| |
| |
| 2006 |
*| * * * | *
_________)/\\_//(\/(/\)/\//\/|_)_______
Goodbye shinh the yaruki nai zeeeeee...
(16:29)
def rip(name,skill, res1, res2)
<<END
<pre>
----------
/ \\
/ REST \\
/ IN \\
/ PEACE \\
/ \\
|#{name.center(18)}|
| |
|#{res1.center(18)}|
|#{res2.center(18)}|
| |
| |
| 2006 |
*| * * * | *
_________)/\\\\_//(\\/(/\\)/\\//\\/|_)_______
Goodbye #{name} the #{skill}...
</pre>
END
end
2006 で固定つーのも僕の時はもう進まない、みたいな
(16:32)
\ と \ の区別がないなんて、 そんなかわいそうな環境だったら \ 高 \ 安とかどっちも区別つかねー て感じですか。 なんてかわいそうな。
上の文章はウソです。 ぜんぶ \ です
(16:35)
http://mixi.jp/view_community.pl?id=275305
via http://www.jmuk.org/d/?path=2006/11/09#d09t02
(01:52)
1st tybalt89 56 Perl 10,000 (v2) 2nd kinaba 67 Perl 8,358 (v11)
来たみたいですね…
(02:20)
なんせまずオーバーラップのしかたからしてたぶん違う。
一番短いアレは
BITS 32
org 0
db 0x7f, "ELF" ; e_ident
phdr: dd 1 ; p_type
dd 0 ; p_offset
dd 0 ; p_vaddr
dw 2 ; e_type ; p_paddr
dw 3 ; e_machine
dd filesize ; e_version ; p_filesz
dd filesize ; e_entry ; p_memsz
dd phdr ; e_phoff ; p_flags
dd 0 ; e_shoff ; p_align
dd 0 ; e_flags
dw 0 ; e_shsize
dw 32 ; e_phentsize
dw 1 ; e_phnum
dw 0,0,0
filesize equ $ - $$
これが原形。 これはすごい綺麗に重なってるけど、 e_phoff と p_flags がうまくいかんのだよね。 パーミッションがあわん
(05:18)
i@u ~/wrk/binhacks> nasm tiny.asm i@u ~/wrk/binhacks> la tiny -rwxr-xr-x 1 i 64 2006-11-10 05:22 tiny* i@u ~/wrk/binhacks> ./tiny zsh: no such file or directory: ./tiny
(05:22)
i@u ~/wrk/binhacks> ./hello73 Hello world i@u ~/wrk/binhacks> la hello73 -rwxr-xr-x 1 i 70 2006-11-10 05:47 hello73*
(05:48)
愛が足りないですね…
i@u ~/wrk/binhacks> nasm hello73.asm i@u ~/wrk/binhacks> la hello73 -rwxr-xr-x 1 i 65 2006-11-10 07:16 hello73* i@u ~/wrk/binhacks> ./hello73 Hello world
(07:16)
繰り返しになるけどそもそも現行方針は64Bが打ち止めなわけで。
(07:23)
http://d.hatena.ne.jp/kikx/20061110#1163114535
irb(main):005:0> 52-6+14 => 60
どこに Hello, world!\n 入ってるねん。 あとまぁ 1B ずつずらすのは考えたんですけど、 前考えた時はどこにも入らんという結論だったのと、 今回はすぐ頭が痛くなって日和ってますた…
(14:23)
ヘッダの意味を勘違いしてるみたいだ。 有力候補は p_offset とか p_filesz 。
図をぱくらせてもらって考えてた。 s はでかい値だとダメで上の2つは 0 じゃないとダメだったはず…
00 04 08 0C 10 14 18 1C 20 24 28 2C 30
7f 45 4c 46 ** ** ** ** ** ** ** ** ** ** ** ** 02 00 03 00 ** ** ** ** SS SS SS SS PP 00 00 00 ** ** ** ** ** ** ** ** ** ** 20 00 01 00 ** ** ** ** ** **
01 00 00 00 oo oo oo oo VV VV VV VV ** ** ** ** ss ss 00 00 mm mm mm mm *7 ** ** ** ** ** ** **
00 04 08 0C 10 14 18 1C 20 24 28 2C 30
7f 45 4c 46 ** ** ** ** ** ** ** ** ** ** ** ** 02 00 03 00 ** ** ** ** SS SS SS SS PP 00 00 00 ** ** ** ** ** ** ** ** ** ** 20 00 01 00 ** ** ** ** ** **
01 00 00 00 oo oo oo oo VV VV VV VV ** ** ** ** ss ss 00 00 mm mm mm mm *7 ** ** ** ** ** ** **
ここから 2B は同じくダメ。
00 04 08 0C 10 14 18 1C 20 24 28 2C 30
7f 45 4c 46 ** ** ** ** ** ** ** ** ** ** ** ** 02 00 03 00 ** ** ** ** SS SS SS SS PP 00 00 00 ** ** ** ** ** ** ** ** ** ** 20 00 01 00 ** ** ** ** ** **
01 00 00 00 oo oo oo oo VV VV VV VV ** ** ** ** ss ss 00 00 mm mm mm mm *7 ** ** ** ** ** ** **
00 04 08 0C 10 14 18 1C 20 24 28 2C 30
7f 45 4c 46 ** ** ** ** ** ** ** ** ** ** ** ** 02 00 03 00 ** ** ** ** SS SS SS SS PP 00 00 00 ** ** ** ** ** ** ** ** ** ** 20 00 01 00 ** ** ** ** ** **
01 00 00 00 oo oo oo oo VV VV VV VV ** ** ** ** ss ss 00 00 mm mm mm mm *7 ** ** ** ** ** ** **
次の 1B もそう。あ、 p_offset もだめな気が。
00 04 08 0C 10 14 18 1C 20 24 28 2C 30
7f 45 4c 46 ** ** ** ** ** ** ** ** ** ** ** ** 02 00 03 00 ** ** ** ** SS SS SS SS PP 00 00 00 ** ** ** ** ** ** ** ** ** ** 20 00 01 00 ** ** ** ** ** **
01 00 00 00 oo oo oo oo VV VV VV VV ** ** ** ** ss ss 00 00 mm mm mm mm *7 ** ** ** ** ** ** **
次の 2B もそう。
00 04 08 0C 10 14 18 1C 20 24 28 2C 30
7f 45 4c 46 ** ** ** ** ** ** ** ** ** ** ** ** 02 00 03 00 ** ** ** ** SS SS SS SS PP 00 00 00 ** ** ** ** ** ** ** ** ** ** 20 00 01 00 ** ** ** ** ** **
01 00 00 00 oo oo oo oo VV VV VV VV ** ** ** ** ss ss 00 00 mm mm mm mm *7 ** ** ** ** ** ** **
これしばらく続く。
00 04 08 0C 10 14 18 1C 20 24 28 2C 30
7f 45 4c 46 ** ** ** ** ** ** ** ** ** ** ** ** 02 00 03 00 ** ** ** ** SS SS SS SS PP 00 00 00 ** ** ** ** ** ** ** ** ** ** 20 00 01 00 ** ** ** ** ** **
01 00 00 00 oo oo oo oo VV VV VV VV ** ** ** ** ss ss 00 00 mm mm mm mm *7 ** ** ** ** ** ** **
これもちょいと続くよ
00 04 08 0C 10 14 18 1C 20 24 28 2C 30
7f 45 4c 46 ** ** ** ** ** ** ** ** ** ** ** ** 02 00 03 00 ** ** ** ** SS SS SS SS PP 00 00 00 ** ** ** ** ** ** ** ** ** ** 20 00 01 00 ** ** ** ** ** **
01 00 00 00 oo oo oo oo VV VV VV VV ** ** ** ** ss ss 00 00 mm mm mm mm *7 ** ** ** ** ** ** **
00 04 08 0C 10 14 18 1C 20 24 28 2C 30
7f 45 4c 46 ** ** ** ** ** ** ** ** ** ** ** ** 02 00 03 00 ** ** ** ** SS SS SS SS PP 00 00 00 ** ** ** ** ** ** ** ** ** ** 20 00 01 00 ** ** ** ** ** **
01 00 00 00 oo oo oo oo VV VV VV VV ** ** ** ** ss ss 00 00 mm mm mm mm *7 ** ** ** ** ** ** **
00 04 08 0C 10 14 18 1C 20 24 28 2C 30
7f 45 4c 46 ** ** ** ** ** ** ** ** ** ** ** ** 02 00 03 00 ** ** ** ** SS SS SS SS PP 00 00 00 ** ** ** ** ** ** ** ** ** ** 20 00 01 00 ** ** ** ** ** **
01 00 00 00 oo oo oo oo VV VV VV VV ** ** ** ** ss ss 00 00 mm mm mm mm *7 ** ** ** ** ** ** **
しばらく続いて、
00 04 08 0C 10 14 18 1C 20 24 28 2C 30
7f 45 4c 46 ** ** ** ** ** ** ** ** ** ** ** ** 02 00 03 00 ** ** ** ** SS SS SS SS PP 00 00 00 ** ** ** ** ** ** ** ** ** ** 20 00 01 00 ** ** ** ** ** **
01 00 00 00 oo oo oo oo VV VV VV VV ** ** ** ** ss ss 00 00 mm mm mm mm *7 ** ** ** ** ** ** **
これも続いて、結局、
00 04 08 0C 10 14 18 1C 20 24 28 2C 30
7f 45 4c 46 ** ** ** ** ** ** ** ** ** ** ** ** 02 00 03 00 ** ** ** ** SS SS SS SS PP 00 00 00 ** ** ** ** ** ** ** ** ** ** 20 00 01 00 ** ** ** ** ** **
01 00 00 00 oo oo oo oo VV VV VV VV ** ** ** ** ss ss 00 00 mm mm mm mm *7 ** ** ** ** ** ** **
これじゃあ64Bが限界。
まぁどっかに勘違いがあるなり
(15:01)
http://d.hatena.ne.jp/kikx/20061110#1163148475
どこが普通やねんと…!
にしてもどこで止まってるんだろう。 kernel オプションとかだとすると p_flags 以外で止まるか止まらんか差があるってのもアレだなぁ。 strace してやるとだいたいどこで止まったかは 予想がつくものですが。
うちだと
とかだった気がします。 いや全然覚えてないぞ…!
なんにせよそのサイズで ヘッダに命令埋めつくしたのはすごいです…
(17:58)
76B はどこでも動くんだけど。
i@u ~> uname -a Linux u 2.6.17-10-generic #2 SMP Fri Oct 13 18:45:35 UTC 2006 i686 GNU/Linux
これが作業環境。
i@u3 ~/t> uname -a Linux u3 2.6.7-1-386 #1 Thu Jul 8 05:08:04 EDT 2004 i686 GNU/Linux i@u3 ~/t> la hello73 -rwxr-xr-x 1 i 65 2006-11-10 18:01 hello73* i@u3 ~/t> ./hello73 zsh: killed ./hello73
ぎゃー 65B のヤツが動かない。 65B のヤツは p_filesz と p_memsz に侵食してるから、 そこの制約が厳しいんだろうなぁ。
i@u3 ~/t> la ./hello72 -rwxr-xr-x 1 i 72 2006-11-10 18:00 ./hello72* i@u3 ~/t> ./hello72 Hello world
侵食してない 72B はオッケ。
i@un ~/t> uname -a Linux un 2.6.15.4 #1 SMP Mon Feb 27 17:28:54 JST 2006 i686 i686 i386 GNU/Linux i@un ~/t> ./hello73 Hello world i@un ~/t> ./hello72 Hello world
どっちもオケ。しかし hello73 が 65B という罠がひどい。
cf.sf.jp にて。
shinh@cf-x86-linux:~/t$ uname -a Linux cf-x86-linux 2.4.29-blade #1 2005年 3月 22日 火曜日 18:17:12 JST i686 GNU/Linux shinh@cf-x86-linux:~/t$ ./hello73 Hello world shinh@cf-x86-linux:~/t$ ./hello72 Hello world
どっちも動く。俺の誕生日にカーネルビルドするとはやるな。
cf.sf.jp
shinh@cf-amd64-linux:~/t> uname -a Linux cf-amd64-linux 2.4.21-297-smp #1 SMP Sat Jul 23 00:45:13 UTC 2005 x86_64 x86_64 x86_64 GNU/Linux shinh@cf-amd64-linux:~/t> ./hello72 Hello world shinh@cf-amd64-linux:~/t> ./hello73 Hello world
Opteron のマシンらしいね
sf.net のシェルサーバ
[shinh@sc8-pr-shell1]~/t% uname -a Linux sc8-pr-shell1.sourceforge.net 2.6.17.6 #1 SMP Sat Jul 15 16:00:03 PDT 2006 i686 i686 i386 GNU/Linux [shinh@sc8-pr-shell1]~/t% ./hello72 Hello world [shinh@sc8-pr-shell1]~/t% ./hello73 Hello world
-bash-3.00$ uname -a Linux shell.cf.sourceforge.net 2.6.9-42.0.2.ELsmp #1 SMP Wed Aug 23 00:17:26 CDT 2006 i686 i686 i386 GNU/Linux -bash-3.00$ ./hello72 Hello world -bash-3.00$ ./hello73 Hello world
shinh@x86-linux1:~/t$ uname -a Linux x86-linux1 2.6.8-2-386 #1 Tue Aug 16 12:46:35 UTC 2005 i686 GNU/Linux shinh@x86-linux1:~/t$ ./hello72 Hello world shinh@x86-linux1:~/t$ ./hello73 Hello world
shinh@x86-linux2:~/t$ uname -a Linux x86-linux2.cf.sourceforge.net 2.6.10-1.771_FC2smp #1 SMP Mon Mar 28 01:10:51 EST 2005 i686 i686 i386 GNU/Linux shinh@x86-linux2:~/t$ ./hello72 Hello world shinh@x86-linux2:~/t$ ./hello73 Hello world
shinh@amd64-linux1:~/t$ uname -a Linux amd64-linux1.sourceforge.net 2.6.9-1.667smp #1 SMP Tue Nov 2 15:09:11 EST 2004 x86_64 x86_64 x86_64 GNU/Linux shinh@amd64-linux1:~/t$ ./hello76 Segmentation fault shinh@amd64-linux1:~/t$ ./hello73 Hello world Segmentation fault shinh@amd64-linux1:~/t$ ./hello72
72Bの方が帰ってこないよ!
全部どっかしらで問題出てるし。 というか 65B のヤツ_だけ_が動く64bit環境ってなにがおきてるの。
ちなみにすげーてきとうにぶっこんだファイル
(18:20)
第一回くやしさまぎらわせ大会
プギャー
1st shinh 82 Ruby 10,000 (v32) 2nd kinaba 83 Perl 9,879 (v16) 3rd kik 83 Ruby 9,879 (v23)
プギャー
2nd primo 50 Ruby 9,200 (v23) 3rd shinh 50 Ruby 9,200 (v17) 4th queball 51 Ruby 9,019 (v3) 5th kik 51 Ruby 9,019 (v5) 6th mame 51 Ruby 9,019 (v2)
とか書くと瞬時に逆転されそうで怖いのであった
(18:40)
ということは、一定ポータブルって条件を入れたら、 64B の Hello world (!,無し) が最短になる可能性が高いんだろうか。 そのくらいの難易度の争いじゃないと 歯牙にもかからん予感…
Debian でコケてた 65B hello73 は、
i@u3 ~/t> readelf -l hello73 readelf: エラー: Unable to read in 0x4b9 bytes of section headers readelf: エラー: Unable to read in 0x972000 bytes of section headers Elf ファイルタイプは EXEC (実行可能ファイル) です エントリポイント 0x20002e 1 個のプログラムヘッダ、始点オフセット 32 Program Headers: タイプ オフセット 仮想Addr 物理Addr FileSiz MemSiz Flg Align LOAD 0x000000 0x00200000 0x04b90001 0x02000 0xd578d01 WE 0xeb9380cd
この MemSiz がでかすぎる模様。
というわけでぶっちゃけこんなのはすぐ調整できる つーか lea 入れかえるだけだった。
; hello65.asm
BITS 32
org 0x00200000
db 0x7F, "ELF" ; e_ident
hello:
db "Hello world", 0xa
dw 2 ; e_type
dw 3 ; e_machine
exit: xor EBX, EBX ; e_version
int 0x80
dd _start ; e_entry
dd phdr - $$ ; e_phoff
phdr: dd 1 ; e_shoff ; p_type
dd 0 ; e_flags ; p_offset
dd $$ ; e_ehsize ; p_vaddr
; e_phentsize
dw 1 ; e_phnum ; p_paddr
_start:
mov ECX, 0x00200004
add [ECX], AL
lea EAX, [EDI+4]
inc EBX
lea EDX, [EDI+0xd]
int 0x80
xchg EBX, EAX
jmp exit
とりあえず今晩はこれを 64B にしよう。
(19:07)
うわさどおり短い問題だ。
i@u ~/wrk/golf> ./golf.rb queen.rb 173 test 1: SUCCESS! 0.000000 0.000000 0.016667 ( 0.017802) test 2: SUCCESS! 0.000000 0.000000 0.016667 ( 0.018432) test 3: SUCCESS! 0.000000 0.000000 0.033333 ( 0.016652) test 4: SUCCESS! 0.000000 0.000000 0.033333 ( 0.016837) 173
(22:58)
NASMも触れんとなぁ、ということで Hello world! 76B を移植。 さらにゴルフしよう
; hello76.asm
BITS 32
org 0x00000000
db 0x7F, "ELF" ; e_ident
db "Hello world!"
dw 2 ; e_type
dw 3 ; e_machine
_start: mov byte [EDI+0x10], 0xa ; e_version ; set "\n"
dd _start ; e_entry ; fall through!
dd phdr - $$ ; e_phoff
lea EDX, [ECX+0xd] ; e_shoff
lea EAX, [ECX+0x4] ; e_flags
mov ECX, EAX
jmp short label1 ; e_ehsize
dw 32 ; e_phentsize
phdr: dd 1 ; e_phnum ; p_type
; e_shentsize
dd 0 ; e_shnum ; p_offset
; e_shstrndx
dd 0 ; p_vaddr
label1: inc EBX ; p_paddr
jmp short label2
db 0
dd 76 ; p_filesz
dd 76 ; p_memsz
db 0xff ; p_flags
label2: int 0x80
xchg EBX, EAX
xor EBX, EBX ; p_align
int 0x80
filesize equ $ - $$
(05:37)
このアプローチは賢いなぁとは思ったけど、 "Hello world" のある位置が 0x00200000 とかになっちゃって、 これがうっとうしいんだよなぁ…
さっきの Hello world は EAX(writeシステムコール) と ECX(4Byte目にHello worldが置いてある) が 一致してる、とかそういうのが美しいんだけど
; hello.asm
BITS 32
org 0x00200000
db 0x7F, "ELF" ; e_ident
db "Hello world", 0xa
dw 2 ; e_type
dw 3 ; e_machine
;_start: jmp short label1 ; e_version
; dw 0
dd 1 ; e_version
dd _start ; e_entry
dd phdr - $$ ; e_phoff
phdr: dd 1 ; e_shoff ; p_type
dd 0 ; e_flags ; p_offset
dd $$ ; e_ehsize ; p_vaddr
; e_phentsize
dw 1 ; e_phnum ; p_paddr
dw 0 ; e_shentsize
dd filesize ; e_shnum ; p_filesz
; e_shstrndx
dd filesize ; p_memsz
; db 0xff
dd 5 ; p_flags
dd 0x1000 ; p_align
; _start: xor eax, eax
; inc eax
; int 0x80
;_start: mov byte [EDI+0x10], 0xa ; p_flags
_start: mov ECX, 0x00200000 ; p_align
lea EDX, [EDI+0xd] ; p_align
lea EAX, [EDI+0x4]
lea ECX, [ECX+0x4]
inc EBX
int 0x80
xchg EBX, EAX
xor EBX, EBX
int 0x80
filesize equ $ - $$
コメント無茶苦茶やな。
(06:14)
さっきのは 88B
うーん ! は無いしなんかなぁ。 x86 って文字列コピー命令とかあったと思うけど、 あのへん使うと完全に 76B にはならん気がするなぁ。
あと綺麗に重なりすぎてて fall through できないのも美しくないよなぁ。
(06:19)
; hello.asm
BITS 32
org 0x00200000
db 0x7F, "ELF" ; e_ident
db "Hello world", 0xa
dw 2 ; e_type
dw 3 ; e_machine
exit: xor EBX, EBX ; e_version
int 0x80
dd _start ; e_entry
dd phdr - $$ ; e_phoff
phdr: dd 1 ; e_shoff ; p_type
dd 0 ; e_flags ; p_offset
dd $$ ; e_ehsize ; p_vaddr
; e_phentsize
dw 1 ; e_phnum ; p_paddr
dw 0 ; e_shentsize
dd filesize ; e_shnum ; p_filesz
; e_shstrndx
dd filesize ; p_memsz
_start: inc ECX
shl ECX, 21
lea EDX, [EDI+0xd]
lea EAX, [EDI+0x4]
add ECX, EAX
inc EBX
int 0x80
xchg EBX, EAX
jmp exit
filesize equ $ - $$
とりあえず普通にやると exit 0 するコードはこんなとこかな
(06:42)
(06:48)
末尾の ! にこだわるとすると、 うーんうまく e_type, e_machine が fall through できなくて、
BITS 32
org 0x00200000
db 0x7F, "ELF" ; e_ident
_start:
inc EBX
mov ECX, hello
lea EDX, [EDI+0xd]
inc EAX
jmp short label1
dw 2 ; e_type
dw 3 ; e_machine
label1: ; e_version
inc EAX
inc EAX
jmp short label2
dd _start ; e_entry
dd phdr - $$ ; e_phoff
phdr: dd 1 ; e_shoff ; p_type
dd 0 ; e_flags ; p_offset
dd $$ ; e_ehsize ; p_vaddr
; e_phentsize
dw 1 ; e_phnum ; p_paddr
dw 0 ; e_shentsize
dd filesize ; e_shnum ; p_filesz
; e_shstrndx
dd filesize ; p_memsz
db 0xff
label2:
inc EAX
int 0x80
hello:
db "Hello world!", 0x0a
filesize equ $ - $$
で 73B 。これはセグる。 exit させたきゃもう3B。さらに1Bで正常終了に。 まぁ 76B 越えると意味がない。
末尾の ! にこだわらないなら
BITS 32
org 0x00200000
db 0x7F, "ELF" ; e_ident
db "Hello world", 0xa
dw 2 ; e_type
dw 3 ; e_machine
_start: ; e_version
inc ECX
inc EAX
jmp short main
dd _start ; e_entry
dd phdr - $$ ; e_phoff
phdr: dd 1 ; e_shoff ; p_type
dd 0 ; e_flags ; p_offset
dd $$ ; e_ehsize ; p_vaddr
; e_phentsize
dw 1 ; e_phnum ; p_paddr
dw 0 ; e_shentsize
dd filesize ; e_shnum ; p_filesz
; e_shstrndx
dd filesize ; p_memsz
main:
shl ECX, 21
lea EDX, [EDI+0xd]
lea EBX, [EDI+0x4]
add ECX, EBX
sys:
xchg EBX, EAX
int 0x80
jmp short sys
filesize equ $ - $$
の 72B あたりが、 exit 13 になっちゃうけど、一応。
exit 0 にすると、 73B になった。
BITS 32
org 0x00200000
db 0x7F, "ELF" ; e_ident
db "Hello world", 0xa
dw 2 ; e_type
dw 3 ; e_machine
exit: xor EBX, EBX ; e_version
int 0x80
dd _start ; e_entry
dd phdr - $$ ; e_phoff
phdr: dd 1 ; e_shoff ; p_type
dd 0 ; e_flags ; p_offset
dd $$ ; e_ehsize ; p_vaddr
; e_phentsize
dw 1 ; e_phnum ; p_paddr
dw 0 ; e_shentsize
dd filesize ; e_shnum ; p_filesz
; e_shstrndx
dd filesize ; p_memsz
_start:
lea EDX, [EDI+0xd]
lea EAX, [EDI+0x4]
mov ECX, 0x00200004
inc EBX
int 0x80
xchg EBX, EAX
jmp exit
filesize equ $ - $$
いずれにせよもっと命令を ヘッダに紛れこませればもうちょい削れる気がする…
(08:44)
2634.jp でアクセスを、っていう広告があったわけだけど、 promise.jp でも行けるんなら それでいいんじゃ、みたいなことを思ったのですが。
うーん俺プロミス→promiseは変換できるけど、 プロミス→2634はちょっと変換できないんだよ。 うーん。 どっちが全日本人、というか 金借りる側の人層にはわかりやすいんだろう…
たぶん puromisu.jp を取るといいと思うんだ。 と思ったら取ってあった。 さすが
(16:38)
例えばこの空間のてっぺんに、 私はここ1週間は自殺する予定の無いことを明記します、 最終確認日(○月○日)みたいなのを 手軽に更新できるように置いておけば、 事故か殺人の時に自殺だと誤認される リスクが減るとか。
あまりにどうでもいいリスクだった…!
(16:40)
やるべきことを書き出すといいらしい
とかはどうでもいいとして、
mail のあれはやりたいけど まず Apache 2.2 が欲しいんだよな…
どうでもいいけど昨日の Hello は readelf は SEGV するのに 実行はできるんだよ。
あと Ubuntu はウブンツーじゃないよ。 ユバントゥーだよ。 昨日全く通じなかった俺が言うんだから間違いない
(18:25)
以下のようなことに使われる予定です!
なんでそんな個人的なチャンネルに「さそい」って書いたんだろう
IRCだと消せないわけだ
(19:43)
http://d.hatena.ne.jp/kikx/20061109#1163073252
うへー。 ていうか file コマンドの出力がやけに短いんだけど そういう file コマンドなのやら ELF ヘッダがおかしいのやら… でも ELF ヘッダの e_type と e_machine はいると思うし…
あとそもそも今のやりかただと 限界までコードとヘッダ混ぜても64Bなんだ…
うんつーことは overlap のしかたからして違うんか。
(23:56)
要するにスパムボットはリクエスト投げてみて、 成功してなかったら ちまたによくあるチェックボックスしてね☆系との イタチゴッコ用であるところのアレで 適当に値入れてみてるんかな。
暇潰しに。
よくわかる偏差値
受験のことはあまり覚えてない気味なんだけど、 偏差値という概念は大好きだったので覚えています。
ので負数は邪魔)
たしか 20 かけて100足したのに相当するのが IQ?
まぁ第一義どうでもいい(本当に心底どうでもいい)
(01:07)
偏差値はあんまり10000越えたりとかはしないと思う。 そうじゃないとドラゴンボールみたいになっちゃうよ
i@u ~/wrk/golf> cat heikin.rb
s=t=0
d=$<.map{|v|s+=v.to_i}
s/=@n=d.size
d.map{|v|t+=(v-s)**2}
d.map{|v|p 50+10*(v-s)/Math.sqrt(t/@n)}
i@u ~/wrk/golf> ruby heikin.rb
20
30
40
47.2943310962553
55.4113378074894
66.2340134224682
どうしよう。まだ全然違うよ
(01:09)
(01:14)
すぐ追いつかれるだろうな
3rd shinh 50 Ruby 9,200 (v17) 4th queball 51 Ruby 9,019 (v3) 5th kik 51 Ruby 9,019 (v5) 6th mame 51 Ruby 9,019 (v2)
ヘタすると抜かれる気がする
(03:43)
17th niha 71 Ruby 9,154 (v5) 18th shinh 73 Ruby 8,904 (v11)
これでやるきあっぷ ('-')v
(04:52)
(14:24)
http://yowaken.dip.jp/tdiary/20061108.html#p01
これで落ちるのか勉強になるな。 明日から使っていけるテクニークだ
i@un ~> ruby -e '($...$.).map{|[][$.+=$.]|}'
-e:1: [BUG] Segmentation fault
ruby 1.8.4 (2005-12-24) [i386-linux]
zsh: abort ruby -e '($...$.).map{|[][$.+=$.]|}'
これじゃ遠く及ばないなぁ。 3H26B
(17:56)
| 前 | 2025年 11月 |
次 | ||||
| 日 | 月 | 火 | 水 | 木 | 金 | 土 |
| 1 | ||||||
| 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| 9 | 10 | 11 | 12 | 13 | 14 | 15 |
| 16 | 17 | 18 | 19 | 20 | 21 | 22 |
| 23 | 24 | 25 | 26 | 27 | 28 | 29 |
| 30 | ||||||
全てリンクフリーです。 コード片は自由に使用していただいて構いません。 その他のものはGPL扱いであればあらゆる使用に関して文句は言いません。 なにかあれば下記メールアドレスへ。
_ niha [前の書き方が限界ぽかったので大きく書き方を替えました。まあ頑張って追い抜きます。踏台ですから。 ボクのことは気にしな..]