10年ほど後のBinary Hacks

https://twitter.com/nalsh/status/869086098177146881を見て、今ならどういうネタが書かれるかなぁとざっくり考えてみます。 perf @nlashさんに指摘されていた通り、perfは重要だと思うんですが、書かれていたperf_event_openはptraceなんか目じゃないくら…

Very symmetric JavaScript code

だいぶ前に左右反転させてもだいたい同じに見えるコードを書いたのですが、もうちょっと進化させて、上下反転と、180度回転してもだいたい同じように見えるコードを書いてみました。デモサイト: http://shinh.skr.jp/obf/very_symmetric_js.htmlコード: http…

drdr

オレオレワークフローエンジン作りたくなる病というのがあって、例えば make 系なんかだと Wikipediaに色々書いてあったりします。ワークフローエンジンと総称するのが正しいのか知りませんが、依存グラフを順ぐりに並列に実行していくようなもの、色々ある…

tanlog

最近、 tanlog というのを作って使っていて、割と便利なので紹介してみます。https://github.com/shinh/test/blob/master/tanlog.rb元々は同僚と、なんか端末に出たもの前もって lv とか tee に入れておくのって、忘れることあるし、 lv とか tee に流すと i…

ELVM Compiler Infrastructure について

はじめに 言語実装 Advent Calendar 2016 用です。ELVMは、コンパイラをフロントエンドと中間言語とバックエンドにわけて、多言語多CPUに対応しよう……というようなLLVMの考え方を、パロディと言っていいレベルにまで単純化したものです。結果として実用性は…

ELVM Compiler Infrastructure

最近作ってたオモチャがだいたいまとまってきました。https://github.com/shinh/elvm第12回 kernel/vm 勉強会で発表した時のスライド:http://shinh.skr.jp/slide/elvm/000.htmlこれは何かというと、前作った bflisp を改良したり整理したりしたもので、 C 言…

Brainfuck interpreter in Ruby's Regexp

Ruby の正規表現だけで Brainfuck インタプリタを作ることができました。正規表現の実行は =~ だけなので、ループなども正規表現の内部で実行してます。https://github.com/shinh/hack/blob/master/bf_rb_reg/bf.rbつまりどういうことができるかというと、 B…

DEFCON CTF 本戦

binjaの現地枠がギリギリ空いてそうだったので、入れてもらいました。思ったことは、みんなすごいなあ、ということと、これしんどいなあということ、ルールはともかくみんなでわちゃわちゃやるの楽しいなということ、あとまあなんと言っても俺ふがいないな、…

システムプログラミング会

すごい久々にイベントの(共同)主催的なことをしましたhttp://connpass.com/event/34995/イメージとしては言語雑談会的な感じで、closedに人集めてウダウダやるつもりだったんですが、途中でPFNさんに場所貸していただけるということで、不特定な人を呼ぶこと…

defcon ctf qual 2016

binjaの人たちすごいなと見てた。今回は結構な時間参加できたんだけど、まあひょっとしたら節約できた時間もあるかもね、てくらいの貢献度だったと思う。まあ入れてもらってからまともに時間使って参加した回が無かったくらいの勢いだったから、少しはなんか…

8cc.bf

https://github.com/shinh/bflisp/blob/master/8cc.bfBrainfuckで動くCコンパイラができました。このコンパイラ自身で同じコンパイラをコンパイルすることも可能です(ただし5時間以上かかる)。前回との差分はレジスタの幅とデータメモリ空間を24bitに広げた…

就職して9年が過ぎる

転職して7年が過ぎたというのを読んで気づいたんだけど、そろそろ入社後9年が経過したらしい。僕は結構長い期間をここで過ごしたことになるんだなと思った。ちょっと以前のことを振り返ってみようと思う。言うまでもないけどこれは僕の書ける範囲での個人的…

bflisp.bf

https://github.com/shinh/bflispLisp インタプリタを作りました。 Brainfuck で。だいたい sedlisp や beflisp や makelisp と似たようなことができます。ちょっとバグあるみたいですが。Malbolge は実装不能だと思うので、これ以上なくキツいターゲットじ…

あとひとつ書き忘れてた

パーティクルプログラミング、Rubyは3文字連続のやつが1回と残りは全部2文字連続、てのができるんですが、Perlも全く同じ条件で書けると思っています。ただそれより厳しい条件が可能かどうかがよくわからない。

TRICK 2015

口頭でも言いましたが、今回は落選したものでも良いできだなーというのが多かったです。前回が価値が無いというほどでは全然ないんですけど、しかしちょっと差があったのは事実かなと。僕が高得点をつけたものについて コラッツ https://github.com/tric/tri…

printf 用のマクロの話

C言語 Advent Calendar 2015 - Qiita 向け 15年ほどC++書いてるんですが、どんどん自分の書くコードがbetter Cになっていっているような気がしています。どんどん先進性みたいなのが劣化している気がするので、特に高度なことは書かない…というか書けないで…

HITCON CTF 2015

今回は fuzzi3 というなんか卑怯な人の多さのチームに混ぜてもらいました。用事もあったのでゆるく参加するつもりが割と頑張ったけ。けどゆるく参加しても貢献度変わらなかったんじゃね?という感じの成果でした。チームがものすごいので4位。他人の成果に乗…

kati について

https://github.com/google/katikati について、ドキュメント書こう…と思っていたのですがなかなか進まないので、とりあえず日本語で書いてみることにしました。何書くかがあまり明確じゃないテーマなので、何書くか考えるのと英語考えるのを両方同時にやる…

あなたの知らない超絶技巧プログラミングの世界

奇書を頂きました。一応レビュアーとして参加したことになっています…が、掲示板かなにかと勘違いした人が雑談をして邪魔をしているな、という感じでした。浜地慎一郎という文字列が10回くらい出てくる残念な本です。もう少しマジメに説明すると、私がクソコ…

makelisp.mk

https://github.com/shinh/makelispLisp インタプリタを書きました。 GNU make で。https://github.com/shinh/makelisp/blob/master/makelisp.mkもちろん $(shell) や $(guile) は使わない縛りです。だいたい sedlisp や beflisp と似たようなことができます…

MMA CTF 2015

http://uecmma.github.io/mmactf/ja/なんかとても面白かった。21位。あまり気力の無い季節なので、 Pwn を避けて慣れないジャンルを解く感じで。ただスプラトゥーンを始めてしまったため、最後の20時間は問題読むくらいしかしてなくて28時間コンテストでした…

機械は人狼を見つけられるかな、の各国対応

ずいぶん昔に作った対人狼ベイジアンフィルタ、少し前に各国対応してたんですが、 @mr_konnさんのtweetで思い出したのでここに書いておきます。使いかたはサンプルURLを参照のことhttp://shinh.skr.jp/expwolf/人狼AIなんてなー10年近く前に俺が通った道だ……

ICFPC 2015

開始1時間くらい前に酒飲まないかと誘われる。まー ICFPC 一応やるんで、とか言うと一緒にやることになった。ので初のチームでの参加。チーム名は N6B 。FFRK やってたら始まる。なにこれ落ちゲーとかやる気起きないっていうかこれやるなら puyoai の方が面…

Unix v6 の C コンパイラが面白かった話

Unix v6 の C コンパイラをいじってみようと見てたのですが、これがなかなかすごい物体でした。読んでて、「いやいくらなんでもこんな作りなわけが…」と思って説明文を探して、http://plan9.bell-labs.com/7thEdMan/v7vol2b.pdfの「A Tour through the UNIX …

ppencode2

Shibuya.pm で ppencode 2 についての話をしてきました。http://shinh.skr.jp/slide/ppencode2/000.htmlつうてもしかしはてなんの話したらいいんだっけ感があって、なんの話をしたんだっけ。。しっかしまあ、できたんだなーよかったねー感はありますね。おま…

Python 2/3 で小文字アルファベットと丸括弧だけで Quine を書く

http://shinh.hatenablog.com/entries/2015/05/11の続き。 @mametter が next(reversed(range(i))) で i-1 ができるということと、 @phoenixstarhiro が unichr(x)in(list(unichr(y))) で x==y ができるということを発見してくれたため、現実的なサイズで Qu…

Python 2/3 で小文字アルファベットと丸括弧だけでプログラムを書く

http://d.hatena.ne.jp/nishiohirokazu/20120906/1346938523を読んで、なるほどー、でもカンマが必要というのは説得力が弱いな、と思ったので頑張ってみました。任意の Python コードを小文字アルファベットと丸括弧だけに変換できます。http://shinh.skr.jp…

重複なしで Hello, world! を Ruby だけで

CodeIQ に Hello, world! を3つ以上の言語で書きなさい、ただしそれぞれで使われてる文字種に重複があったらダメ、という問題がありました。http://nabetani.hatenablog.com/entry/codeiq_hwx3_q766私の解答は6言語使ったものでした。http://shinh.hatenablo…

ppencode 2 - 任意の Perl コードを予約語だけの Perl コードに変換する

@TAKESAKO さんが ppencode を作ってから 10 年経って、私が任意の Perl コードを小文字だけに変換するスクリプトを書いてからでも5年経つらしいですが、なんか任意の Perl コードを予約語だけの Perl コードに変換するスクリプトができました。http://shinh…

Base64 decoder/encoder in Perl

http://shinh.skr.jp/obf/b64_dec.pl dXNlIE1JTUU6OkJhc2U2NDtwcmludCBlbmNvZGVfYmFzZTY0IGpvaW4nJyw8PjsKX19FTkRfXwo+ s//v62/e+s//v60/e+s//v44/e+s//v39/e+s//v39/e+s//join/+s//v32/e+s//base64/ss+ s//v95/e+s//decode/+s//v32/e+s//print/+s//v59/e+s/…

TLE 2015

http://felicity.iiit.ac.in/contest/tle/成果物: https://gist.github.com/shinh/64fbd3d43147f6a7bbb4毎年思ってることだけど、ここ数年は特に脳死しているなーという時に行なわれてる…ので腑甲斐ないのはしょうがないんだよ。今回は結構神回だったんじゃ…

GLSL Quine

前から書いてみたいなーと思っていた、 GLSL による Quine です。http://glslsandbox.com/e#23148.0マウスカーソルを画面半分より下に送ると拡大して読みやすくなっていきます。 Quine になってるかの確認は困難ですが、ぱっと見た感じあってるような気がし…

Exploit and defenses

会社でバイナリの脆弱性を攻撃する方法と、それに対して防御する方法の一般的な簡単な話を適当にしたので、スライドを置いておきます。http://shinh.skr.jp/slide/exploit/000.htmlなにか一般論を書いてたら終わった感。まぁそのぶん基本的なことを網羅でき…

CRC32 Quine

Quine Advent Calendar というのがあるのかーと思ったが、特にネタがなかったので一発ネタ。http://www.adventar.org/calendars/645 $ curl http://shinh.skr.jp/dat_dir/crc32_quine1.txt > x % Total % Received % Xferd Average Speed Time Time Time Cur…

SECCON 2014 予戦

ソロ。30位。今回はちゃんと点数集める方向でやってみよう…と途中まで思ってやってる感じだったので、ちょっとそれにしては、なイマイチ感。http://ctf.seccon.jp/rank/なんかエスパー力検定みたいなオーラがそこらじゅうから流れてたなあ感。 Easy Cipher /…

static link について

案外、 static link ってわかってないもんです。というかリンカってわかってないもんです。そして案外はまるものです。以下のクイズに答えられるでしょうか。 クイズ1 $ nm main.o # int main() {} 0000000000000000 T main $ nm foo.a # void foo() { bar()…

はてなブログにおひっこし

なにやらリダイレクトとか含めて、簡単に移動できそうだったので、はてなブログにおひっこししてみました。サイドバーとかついてブログぽくなりました。動機はエゴサーチで、 shinichiro_h てのが twitter で検索できないんですよねなんか。

CSAW CTF 2014

https://ctf.isis.poly.edu/scoreboard前回 (HITCON CTF 2014) 参加した時に、これは面白いけど一人でやると真剣にしんどいなーと思ったので、まわりの人を適当に誘ってチームで参加してみました。名前のアイデアが誰もなかったので、僕が適当に決めた nop-o…

irbrc を書いたら ruby 1.9 とだいぶ和解できた話

いつも言ってることだけど、 ruby 1.9 からの m17n のせいで、バイナリツールとしての ruby が色々不便になって、参っていました。特に、 'a' の ASCII code を知るのに、 irb(main):001:0> 'a'[0] => "a"とかやるクセがついてて、これで "a" と出るとか、そ…

HITCON CTF 2014

CTF ていう、セキュリティコンテスト的なやつ、前から少し気になってたんだけど、おすすめしてもらったこともあって初参加してみました。結果は 20 位。大変たのしかった。リポジトリ: https://github.com/shinh/hitcon-ctf-2014 vash 10 練習的なやつ。いき…

ICFPC 2014

総じておだやかに楽しかった。https://github.com/shinh/icfpc2014 1日目 初日、21時から問題を読む。んー普通だなーと思いつつとりあえず寝る。起きて Lambda-man の AI を書きはじめる。普通だと思ったけど、 Lisp マシンってこういうふうな感じなんだなぁ…

2D Lisp

beflisp.bef が 1次元 Lisp しかサポートしてないのはけしからん、と言われてその通りだなぁと思ったので、 lisp2d.c てのを書いて beflisp2d.bef を生成してみました。 bc2bef.cc は全くいじる必要がありませんでした。 Befunge コードが C 書くだけで作れ…

追記

TODO の後者の方はやった。3倍はやくなりました。前者の方はとりあえずレジスタって概念を導入してみて、少しだけはやくなりました。次で使う場合はレジスタっていうか Befunge のスタックに残しておけるんで、そういうことをすれば少しだけ速くなるはずです…

beflisp.bef と LLVM Befunge backend

https://github.com/shinh/beflispLisp インタプリタを作りました。今度は Befunge で。https://github.com/shinh/beflisp/blob/master/beflisp.befコードを見ればわかりますが、手書きは諦めました。 前回の sed と違って Befunge は数値演算は素直に提供し…

sedlisp.sed

https://github.com/shinh/sedlispLisp インタプリタを書きました。 sed で。https://github.com/shinh/sedlisp/blob/master/sedlisp.sedREADME に書いた通り、それなりにややこしいプログラムも動く気がします。具体的には eval.l として、 eval の無いとこ…

失敗ロック例いくつか

なにかあまりスレッドとか得意でない人のコードを見ていて、いくつかダメな予感がするパターンがあるよね、ってことで適当に集めてみました。どれもこれも小さな例にすると、こんなミスしねーよ、って感じなんですけど、複雑なコードの中にあると結構ミスる…

あと別解

存在を忘れかけてたんですけど、 Haskell, Falcon, Lua を消して Scheme, Clojure, Common Lisp を足そうとしたバージョンがあったんですが、 ideone の Scheme が Gauche じゃなくて Guile だったので萎えたバージョン:http://shinh.skr.jp/obf/polyadd2.tx…

polyglot addition

https://codeiq.jp/ace/cielavenir/q816を見ておお面白い問題だーと思って、がんばったのはいいんですが、提出忘れてたぽいんで、勝手に上げておいておきます。Ruby / Bash / Python / Perl6 / Perl / Haskell / Brainfuck / Whitespace / Groovy / Falcon /…

あと

これのおかげで Bash の Hello broken keyboard の記録が更新されました。http://golf.shinh.org/p.rb?Hello+broken+keyboard#Bash

hello, world * 6

https://codeiq.jp/ace/nabetani_takenori/q766を見て、おおこれは面白い問題だーと思ってチャレンジしました。とはいえ 3 言語で重複無しとか、文字種制限経験者には楽勝なんで、 6 言語になりました。第一感では 5 言語くらいはいけるだろーと思って、後で…

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