プログラミングについてのWiki。

夏休みバイナリ入門 2012

夏休みの二日間にわたり、低レイヤのプログラミングを紹介する目的で開催します。
代表的なバイナリとして実行可能形式と圧縮ファイルについて取り上げます。

第1日目 8/19(日) 13:00〜18:00 classファイル
http://partake.in/events/2683c112-ef8c-4958-95d0-b...
13:00〜14:00バイトコードやclassファイルの構造について
14:00〜17:00確認や実装
17:00〜18:00進捗確認
詳細: binsummer2012/1

第2日目 8/26(日) 13:00〜18:00 JAR(ZIP)ファイル
http://partake.in/events/99b9a2e8-b83a-4dae-bd72-a...
13:00〜14:00圧縮について、ZIPとJARの関係、ハフマン符号について
14:00〜17:00確認や実装
17:00〜18:00進捗確認

配布資料


第1日目
http://sdrv.ms/UcOUpW (PDF)
http://sdrv.ms/QBVzoQ (ソース)

第2日目(回答付き)
http://sdrv.ms/PF0nIQ (PDF)
http://sdrv.ms/S5BCef (ソース)

サポート


参加を逃した方、もっと詳しく知りたい方などは池袋バイナリ勉強会で対応します。
http://w.livedoor.jp/ikebin/

資料


Java仮想マシン仕様書 (The Java Virtual Machine Specification)
http://docs.oracle.com/javase/specs/

classファイルの解析
http://7shi.hateblo.jp/entry/2012/06/19/075814

classファイルの注釈付きバイナリダンプ
http://7shi.hateblo.jp/entry/2012/06/19/203632

クラスファイル構成
binsummer2012/jvms-4

虎塚さんによる第1日目のまとめ: Javaのクラスファイルの読み方
http://d.hatena.ne.jp/torazuka/20120820/cafebabe

虎塚さんによる第2日目のまとめ: jarファイルのバイナリの読み方
http://d.hatena.ne.jp/torazuka/20120826/zip

サンプル


JavaとPythonで用意。プログラミング経験がない人にはPythonで説明する予定。
https://bitbucket.org/7shi/binsummer2012

Cafebabe: WEBブラウザでconstant_poolまでをツリー表示するサイトを作成。ローカルのファイルシステムからDnDでクラスファイルを渡せる。
https://twitter.com/shinaisan/status/2362270414422...
http://shinaisan.github.com/cafebabe/cafebabe.html

参考にスタックマシンを javascript で実装してみました。
http://quwahara.github.com/stackmachine/bs/stackma...

JARに画像をリソースとして持たせる例(勉強会では未使用)
https://gist.github.com/3749659

コマンド


ファイルを16進数でダンプする。zオプションがGNU od依存。(Linuxなど)
$ od -Ax -tx1z Hello.class
000000 ca fe ba be 00 00 00 33 00 1d 0a 00 06 00 0f 09  >.......3........<
000010 00 10 00 11 08 00 12 0a 00 13 00 14 07 00 15 07  >................<
(以下略)

別途GNU odをインストールするとzオプションが有効になる。(Mac OS Xなど)
$ god -Ax -tx1z Hello.class

スペースをコンマに置換してCSVで出力する。(UNIX汎用: GNU od非依存)
$ od -Ax -tx1 Hello.class | sed -E 's/ +/,/g' > Hello.csv

リンク


内容についての打ち合わせ(終了
http://atnd.org/events/30175

日程調整ページ(終了
http://atnd.org/schedule/0b302fc318e6a6ddd4f55f116...

経緯


セプキャンみたいな感じで、若い人が低レイヤに触れる機会を作ってみたいというような話が発端です。

後で知ったのですが、私立版キャンプも開催されるんですね。

私立・プログラミングキャンプ 2012 東京大会(終了
http://atnd.org/events/30833

私立・プログラミングキャンプ 2012 京都大会(終了
http://atnd.org/events/30834

Wiki内検索

Menu

ここは自由に編集できるエリアです。

管理人/副管理人のみ編集できます