FlashやFlex,(Ajax),S2Flex2,ActionScript3,yui-frameworks,Akabanaプロジェクトなどのメモ帳 Adobe SystemsがFMSやLCDSで使われているプロトコルであるRTMP(Real-Time Messaging Protocol)の仕様を公開する事を発表しています。 現段階では、公開する事の発表のみで、仕様の公開は2009年の前半にAdobe Developer ConnectionにRTMPのページ(2009/1/21現在はまだページが有りません)を作って公開するとの事。 Adobe to Open Flash Platform Messaging Protocol http://www.adobe.com/aboutadobe/pressroom/pressreleases/200901/012009RTMP.html 今回
ふと思い立って,プログラマーから見た Flash について書くことにしました。SWF and AMF Technology Center | Adobe Developer Connection からダウンロードできる SWF file format specification をもとに*1。 といっても,ActionScript 1.0 / 2.0 / 3.0 の違いについて説明するものではありませんよ*2。 SWF ファイルフォーマット ヘッダのあとに,複数の「タグ」と呼ばれる構造体が続く構造になっています。「タグ」という言葉は紛らわしいので以降はチャンク(chunk)と呼ぶことにします。 ある SWF ファイルの例*3を示します。ヘッダは省略しています。 [D] DefineBitsJPEG2 (ビットマップの定義) [D] DefineShape (シェイプの定義) [D] Def
とある都合で、ソフトウェア開発の際にソースコードの提供されていないツールを使うことになりました。x86なLinux上で動く、ちょっとしたtoolchainです。が、そのツールの処理速度が遅く、入力サイズに対して、結果が出てくるまでの時間がどうもO(N^2)かそれよりひどい。遅くてイライラするので、昨晩ついカッとなってパッチを当てました。そのメモです。また、ありがちな事態(?)な気もするので、みなさんどうしてるのかなー的なお伺いも兼ねて。 ボトルネックの特定 そのツール(以下A)の実行バイナリはstripされておらず.symtabが残っていました。のでまず、どこが遅いのかgoogle-perftoolsをLD_PRELOADしてそのソフトウェアを実行し、実行プロファイルを取りました。すると、嬉しいことにある一つの関数(以下F)で全体の90%以上の時間を消費していることがわかりました。関数Fは
DWARF 情報全体の構造は上記のような tag で分別できる Die をノードから成る 木構造で表現できます。 . |-- DW_TAG_compile_unit | |-- DW_TAG_base_type | |-- DW_TAG_pointer_type | | ... | |-- DW_TAG_compile_unit | |-- DW_TAG_base_type | | ... | |-- DW_TAG_pointer_type | |-- DW_TAG_subprogram | | |-- DW_TAG_formal_parameter | | |-- DW_TAG_formal_parameter | | `-- DW_TAG_formal_parameter | |-- DW_TAG_variable | | ... | `-- DW_TAG_compile_unit |
先日、 プログラムの動作をトレースするツールとして ftrace を公開しました。 その後 KLab では引き続き機能拡張を行っており、関数に渡された引数を表示 するような改良を行いました。引数が解ると自作した関数の意図しない動作を 追うときにとても便利そうです。 以下からダウンロードしておためしください ftrace-0.92.tar.gz 注意点 x86(32bit) な環境でしか動作しません デバッグ対象のプログラムは -g と -finstrument-functions フラグを付けてコンパイルされている必要があります。 依存するライブラリは glib1.2, libelf, libdwarf です debian sarge の方は $ apt-get install libglib1.2-dev libelfg0-dev libdwarf-dev を実行すると ./config
先週の土曜日の勉強会で発表した資料を公開します。 FizzBuzz SWF Binary Golf on FlashLite 1.1 http://namazu.org/~takesako/swf/FizzBuzz-SWF-Golf.ppt 申し訳ないことにActionScriptの話は一つもでてきません。 SWFファイルの構造解析とASバイトコードの話です。 そんなシチュエーションがあるかどうかわかりませんが、 SWFファイルのバイナリを直接いじりたいときに役に立つのではないかと。 勉強会ではどの発表も面白かったのですが、個人的にはBeInteractive!のyossyさんとASバイトコードの話ができて嬉しかったです。 [お約束] SWF で FizzBuzz ってみた とりあえず (1) 正解のFizzBuzz文字列をそのまま出力した場合 -> 478 byte (FlashLite
WebアプリケーションデベロッパであるKai Jager氏は11日(ドイツ時間)、自身のブログにおいてBISON (Binary Interchange Standard and Object Notation)について発表した。興味深い提案なので取り上げておきたい。 現在のWebアプリケーションシステムではデータ通信にはXMLベースのデータを採用することが多い。XMLが普及する以前のバイナリフォーマットと比べてXMLベースのデータにはいくつもの利点があり、時代の趨勢としてXMLをデータ通信の基本フォーマットとして採用する流れにある。 しかしながら、バイナリフォーマットにもまた利点がある。たとえばXMLベースのデータとバイナリフォーマットベースのデータを比較した場合、数値情報の表現に差が表れる。XMLベースフォーマットでは数値を文字列として表現するが、バイナリフォーマットであればビットサイ
継続ライブラリを書くのに、setjmp を使えば(ある程度)可搬性が維持できると思い実験していたら見事にはまった。 setjmp が使う jmp_buf にはスタックポインタやら汎用レジスタが保存されていて、それらを書き換えて longjmp してあげれば好きな状態に復帰できる。(当然 jmp_buf はアーキテクチャ毎に構造が違う) jmp_buf に保存されている esp / eip が自分で取得したものと違っていてはまりまくった。 jmpbuf[0].__jmpbuf[3] // ebp jmpbuf[0].__jmpbuf[4] // esp jmpbuf[0].__jmpbuf[5] // eip のように取り出せるはずなのだけど saved ebp = bfd0c6a8 saved esp = 40dac680 // 本当の値は bfd0c680 saved eip = f70
Binary Hacks は GNU/Linux & x86 メインですが、 それ以外だとどんな感じだろうってことを書くところです。 私が個人的にいじってるものですが、 他の人にいじってもらっても問題ありません、 というか知らないことだらけなのでありがたいです。 1. イントロダクション Binary Hack入門 Binary Hack用語の基礎知識 file でファイルの種類をチェックする od でバイナリファイルをダンプする 2. オブジェクトファイルHack ELF 入門 静的ライブラリと共有ライブラリ ldd で共有ライブラリの依存関係をチェックする readelf で ELF ファイルの情報を表示する objdump でオブジェクトファイルをダンプする objdump でオブジェクトファイルを逆アセンブルする objcopy で実行ファイルにデータを埋め込む nm でオブジェク
Binary Hacks の発売日決定 Binary Hacksの発売日が決まりました。 Amazon には 2006/11/14 とありますが、出版社に確認したところ、正式な発売日は 2006年 11月11日でした。めでたく1111というバイナリな発売日となりました。 Binary Hacks のアイディアをオライリーの方に話したのが、昨年 12月の Binary 2.0 カンファレンスにおいて。それか1年近くかかってしまいましたが、ようやく完成しました。 内容的に類書があまりないユニークな1冊に仕上がったと思います。 ぜひ、目次とはじめにをご覧ください。 ちなみに、本書は qwikWeb を使って執筆しました。雑多な取りまとめと比較的簡単なところを私が担当し、高度な部分は他の方が書いています。「本書に寄せて」は大変光栄なことに、川合史朗さんに寄稿していただきました。
忘れた。 どうも、知識があいまいなので、若干まとめておく。間違ってたら、適当に指摘していただけると助かります。 Windowsの場合。 Windowsでややこしいのは、リンクに使うオブジェクト(COFFとか)と、.exe、.dll(PE)のオブジェクトの形式が違う点。(ヘッダが違うだけ?中身一緒?) 共有ライブラリを直接リンクできない。(ような気がする) なので、.dll→.def→.lib てな感じで、一旦DLLがエクスポートしてるシンボルを取得したあと、それをもとにオブジェクトファイル作って、そのオブジェクトをリンクする。 .libの形式が謎。コンパイラ依存かも。 tccは直接.defを読んでるような気がするんだけど、どこで処理してるかわかんない。あとで調べる(←未来) 実行時のリンクは誰がやってるかわからないという。あとで調べない。 実行時の関数呼び出しにDS:とかが見えたので、セグ
LOGIN AJO89 If something goes wrong with your order, you'll get a full refund. Here's what's eligible: Your order doesn't match the item description or photos Your item arrived damaged Your item arrived after the estimated arrival window Your item didn't arrive or was lost in the mail View programme terms
iPod と一緒に amazon.co.jp に注文した MacBook がいまだに届かないので、 この週末は iPod 用の x86 ブートローダを書いた。 前回のエントリで iPod を PC の USB-HDD ブートデバイスにするために MBR に lilo や grub をインストールすると iTunes で使えなくなってしまうと書いたが、それを回避するためのものである。 なんだかすごそうに聞こえるかもしれないが実際はそんなに大したものではなく、 iPod Updater による復元時に MBR に書かれる x86 コードをちょっと上書きしてみただけである。 iPod の MBR は この図 のようになっており、 黄色で示した x86 コードの部分なら書き換えてもたぶん問題ない。 うまい具合に iPod の MBR の次のセクタは使われていないみたいなので、 ここに本来の実行させ
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く