フリーで使えるFlash(SWF)のコンパイラ・逆コンパイルツール

逆コンパイルというとアレな感じなのですが、どうしても逆コンパイルが必要な時ってありますよね。

たとえばswfだけあってソースが無いFlashの移植開発だったり、
ソースをもらえないFlashと通信するシステム開発でデバッグの時に逆コンパイラでFlashから.flaや.asなどソースが取得できれば
随分効率が違います。

また、デコンパイラ・コンパイラ両方の機能を備えているものも多く、
Adobe 製品を使わずに無料でFlash開発する事も可能です。

コマンドラインでSWFを分解・再構成できるツールを使うと
SWFを素材として扱い、Flashを動的に生成する必要のあるWebサービス・プログラムを作成する事も可能になります。

ということで、無償で使える(一部有料ソフトもあり)のコンパイラ・逆コンパイラを紹介します。

hugflash (windowsのみ)

カハマルカの瞳と同じ作者のフリーソフトウェア。ASや画像・音声リソース等をswfから抽出できます。
ASのクラスもちゃんと抽出してくれました。ASを無料で逆コンパイルするならこれが一番。

使い方:
HugFlash.exeを起動して、HugFlashのウィンドウ上で右クリック → モード → HugDimensionを設定しておき、ウィンドウに対象swfをドラッグ&ドロップ。

Flare(win/mac OS 10.3/Linux)

SWFデコンパイラ。メンテナンスされていないのかFlashの対応バージョンが古い(Flash MX まで)です。
参考: Flareの使用方法

swfmill(win/mac/linux)

SWFをXML形式のアセンブラに逆コンパイル・再コンパイルするツール。
SWFとSWFをロスなく相互変換ができ、負荷もそれほどかからないのでFlashを動的に生成するときにも便利です。
XML記述を覚えれば単体で簡単なSWF作成もできますし、他のSWFもリソースとして使用できるのでSWFを合成することもできます。
実際にあった事例として、業務でサーバプログラム(PHP)で動的なFlashを生成するときに利用したこともあります。

使い方:
$ swfmill swf2xml source.swf dest.xml # SWF(バイナリ) から XML(アセンブラ) に変換
$ swfmill xml2Swf source.xml dest.swf # XML(アセンブラ) から SWF(バイナリ) に変換

参考:
swfmillでケータイFlashを動的生成してみよう(インストール編)
swfmill – simple で扱う XML の書式 – タグ一覧

Flasm(win/mac/linux)

SWFのアセンブラ変換ツール。swfmillと組み合わせるといい感じ。
参考:Flashで覚えるアセンブラ・スタックマシン入門(Flasm)(1) – Flashのアセンブラ Flasm を使ってみよう

SWFTools(win/linux)

画像や動画からswfを作ったり、逆に分解したりするコマンドラインツール集。デコンパイルより生成が得意な感じです。

参考:swftoolsを使ってみる

Sothink SWF Decompiler (win/mac)

これだけ有料で、安くもないのですが、かなり高い精度で swf から .fla を生成することができます。
リソース取り出しや部分的な置き換えは他のフリーソフトでも十分ですが、
SWF を元に .fla を作りなおす必要があるときはこのツールが約に立つでしょう。

体験版でも使用可能ですが、体験版には以下の利用制限があります。

1. Exporting Video type resources is disabled in unregistered version.
(未登録版ではビデオタイプのリソースをエクスポートできません。)

2. In the unregistered version, only TWO resources in each category can be exported.
(未登録版では1カテゴリあたり2つのリソースまでしかエクスポートできません。)

3. Viewing all ActionScript is supported, but copying and pasting are unavailable.
(すべてのアクションスクリプトの表示をサポートしていますが、コピーとペーストは不可能です。)

4. The unregistered version allows you to replace SWF elements and preview the result, but “Save” and “Save as” functions are prohibited for saving the new SWF files.
(未登録版はSWFエレメントの置換実行とその結果確認ができますが、新しいSWFとして保存する機能(“Save”や”Save as”)は禁止されています。)

5. In the trial version, all the decompiled resource files and ActionScripts can be viewed clearly and it is enough for you to test the software performance.
(体験版では、デコンパイルされた全てのリソースファイルとアクションスクリプトをはっきり見ることができるので、十分にソフトウェアのパフォーマンステストを行えます。)

他にも、解析用ツールとしてはAdobe純正でフリーで使えるAdobe SWF Investigatorというものもあるようです。
Adobe、Adobe AIR製のSWF解析ツール「Adobe SWF Investigator」をプレビュー公開

ここで紹介したツールはそれぞれ得手不得手があり、できることも様々ですので用途に応じて使い分けるのがよさそうですね。

iGoogleが重い時や固まる場合の対処方法

ChromeでホームページをiGoogleにしているのですが、最近頻繁にクラッシュするようになったので対応方法を調べてみました。

ヘルプセンターの「iGoogle が正しく動作しない」という記事によると、下記を1つずつ試していくとよさそうです。

  1.  コンピュータを再起動します。
  2. ブラウザのキャッシュを消去して Cookie を削除します。
  3. ブラウザのアドオンを無効にします。
  4. iGoogle バックアップを元に戻します。
    iGoogleの設定ページ
  5. 問題の原因となっているガジェットを削除します。
    iGoogleの設定ページ
  6. ヘルプフォーラムに投稿します。
    ヘルプフォーラム
  7. 上記の方法をすべて実行しても問題が解決しなかった場合は、iGoogle ページをリセットします。
    iGoogleのリセットページ

順番に試していき、Google Reader, Gmail 周りのガジェットで固まるのが気になっていたので5の手順でガジェットを消した所でちゃんと動作するようになりました。

 

 

Google Chrome が重いので対策

普段、ブラウザとしてGoogle Chromeを使っています。ですがバージョン12になったあたりからやたらと重くなってきました。確認環境はWindows XP, Windows Vista(いずれも32bit)です。

 

バージョンアップのせいだけでなく、Google+がリリースされた影響や、検索キーワード入力中に動的に検索を行うようになった影響もあるかもしれません。

 

大抵はタイムアウトしたりフリーズしても再読み込みをすれば直りますが、Googleマップの経路検索だけは何度やっても結果検索が出なくなったのには困った・・・

 

原因を調べたところ、どうやら chrome://flags の「GPU Accelerated Canvas 2D」機能が悪さをしているらしく、該当の機能を無効にして再駆動すると問題なく動くように。

 

chrome://flags の設定は試験運用版の機能のため、全てデフォルトでオフになっていますが、Chromeを使っていて不安定になった時は、拡張機能を見直すのももちろんですが、一度chrome://flagsにも余計な機能がオンになっていないかチェックしてみるといいかもしれませんね。

 

ある種のプログラミング言語学

foo, bar, baz..
Fooの語源(RFC3092)
 
ほげ(hoge),ふが(fuga),ぴよ(piyo)…
ほげを考えるページ
 
foobar 派ですが、ほげを考えるページの

4.「ほげ」を英国語に訳すときは foo で良いのでしょうか?
違います。「ほげ」を英国語に訳した場合は hoge です。

には笑ってしまいました。男前。
 
ドメインではexample.com,example.net,example.org(RFC2606)ですね。
参考:
メタ構文変数(wikipedia)
example.com(Wikipedia)

Firefoxの下部の検索バーで入力中に勝手にフォーカスが外れる

サーチエンジン用の検索バー(Search Bar/Ctrl-K)でなく、ページ内検索(Find Bar/Ctrl-F)のお話。
ある時からfirefox を使ってページ内検索すると、文字入力中に時々不意に検索バーがフォーカスを失ってページへのフォーカスに勝手に切り替わってしまうようになりました。
 
不便で悩んでいたのですが、どうやら「Fast Video Download (with SearchMenu)」アドオンが悪さをしているようで、この拡張を無効にしたところ無事元通りの動作になりました。
 
Fast Video Download の、文章をドラッグなどで選択した時に、選択文字列での検索コンテキストメニューを自動で出す機能(テレビマークのアイコンをクリック)が、検索バーの動作と干渉して発生しているようです。
 
追記:Mozilla Firefoxフォーラムでも同じ現象に悩んでいる方がいました。

The Find bar for finding text on a page has changed behavior and it is frustating to use
 (訳:ページ内文章の検索バーの動作が変わって使っていてイライラするようになりました)

解決コメントを見るとやはり原因は同じで、
Firefox 3.6 を入れることで Fast Video Download の動作が変わってしまったという書き込みがありました。

 (2010年3月21日19:01書き込み)dpn:
I disabled the plug-in called Fast Video Download. The problem is gone. I don’t know for sure if there is a connection.
 (訳:Fast Video Download というプラグインを無効にしたら、この問題は解決しました。関連はあるかどうかわかりませんが。

 (2010年3月21日19:10書き込み) Reg:
Yes, I see. Now I tried the same thing (disabled the Fast Video Download addon) and it seems to have fixed the problem here too. Strange though, since I had used the FVD addon without problem on the older firefox, and now it interferes even with the older firefox. Thanks for the info.
 (そうなんですか。同じ事(Fast Video Download アドオンを無効にする)を今やってみたら、こちらでも問題が解決したようです。でもおかしい事に、以前のバージョンのfirefoxではFVDアドオンを使っていても前はこのような問題は起きなかったのに、今では以前のバージョンのfirefoxにも干渉しているようです。情報ありがとうございます。

 (2010年3月21日 19:52 書き込み)Reg:
I have now completely uninstalled search menu and FVD addons, and also uninstalled firefox 3.6 (leaving personal profile information intact when given the choice by firefox uninstaller).
 サーチメニューとFVDアドオンを完全にアンインストールしてfirefox 3.6も(個人設定情報はアンインストーラの選択でで完全に残したままにして)アンインストールしてみました。
Then I downloaded older firefox 3.5.8 from the official mozilla firefox website and reinstalled the search and FVD addons on this older platform.
 (それから以前のfirefox 3.5.8 を公式mozilla firefox ウェブサイトからダウンロードして再インストールして、FVDアドオンをそこにインストールしました。)
Now everything is working again as prior to the firefox 3.6 upgrade. I will only upgrade to firefox 3.6 again if I’m sure all my addons will work properly.
 (それでfirefox3.6にアップグレードする前のままの状態で動いてくれるようになりました。firefox 3.6 にアップグレードするのは、私が使っているアドオンがちゃんと動いてくれるのを確認できてからにしようと思います。)

 
参考:
Fast Video Download(with SearchMenu)
The Find bar for finding text on a page has changed behavior and it is frustating to use(Mozillaフォーラム)

Thunderbird – 「セキュリティエラー ドメイン名が一致しません」対策

TSL 接続で POP 受信しようとした証明書エラーが出る場合、
下のアドオンを入れると便利です。
 
Remember Mismatched Domains

「ドメイン名の不一致」と「サーバ証明書の期限切れ」のセキュリティ警告ダイアログに「このドメインのための証明書について今後は警告しない」というチェックボックスを追加し、次回以降、警告を非表示にできます。

 
本来は正規に取得した証明書を使うべきなのですが、わざわざPOPアクセスドメイン(pop.example.com)のために証明書を買えない状況や、そもそもメインドメイン(example.com)の証明書がオレオレだったりする場合もあるわけで。。
 
ご参考までに。
 
– 参考:
セキュリティエラー:ドメイン名が一致しません(mozillaZine)

ランダムポートは個人を特定しやすくなる、ということ

P2P の実用性について書かれている高木さんの記事が面白かった。
 
ドワンゴ勉強会でお話ししたこと
 
その中で得に気になったのは、匿名性のためにはランダムポートでなく固定ポートで待ち受けるべき、という話です。
 
待ち受けるポートをランダムにすると、ポート単位規制の回避、接続ポートを知らない不特定のクライアントからのアクセス防止といったメリットがある反面、ユーザの少ないネットワークにおいてIPが変わってもポート番号でユーザを結びつけて追跡されうるデメリットがあるとのこと。実際、氏は「ダウンロード違法化反対家の知られるべき実像(高木博光@自宅の日記)」にてこの手法で追跡を行っている。
 
ユーザの匿名性・安全性を考えた対応が、逆にユーザの追跡を容易にさせてしまうというのが皮肉です。

ImageMagickでコマンドラインからアニメーションGIF 1フレーム目を抽出, PNG画像から透過をはずす

– GIF アニメの1フレーム目のみを取り出す(出力はpngでもjpgでも可)

convert from.gif[0] -coalesce to.gif

 
– 透過 PNG 画像のアルファチャネルを除去する
透過を完全になくす時は PNG24 で出力します。
PNG8(パレットモード)にしないのは, PNG8 は GIF と同様パレットの1色を透過色として使うためです。

convert from.png png24:to.png

FireMobileSimplator 1.1.9 リリース

FireMobileSimulator更新されていました。
ホスト限定で有効にできるようになり、ますます便利になりましたが、ソースコードを追ってみたところこのリリースノートで明言されていない隠された機能がありました。
 
この設定、実は正規表現なんですね。

^example\.com$

のようにホスト名が完全一致するときだけ有効にしたり、

^mobile\.

のように mobile. から始まる全てのホストで有効にする、などかなり自由に設定ができます。

FOMA Flashlite3.x をコピー禁止にする

DoCoMo 携帯では Flashlite 3.x からプロファイルでコピー禁止(転送禁止)を明示しないとファイル転送可能になりました。
 
SWFファイルの再配布を防止するには(携帯サイトを作ろう。)に詳しくまとめられています。
CS4 の場合は以下の手順で設定できるようです。

 (引用)
プロパティ→プロファイル→「編集」をクリック
FlashタブのSWF設定で「XMPメタデータを含める」にチェックが入っていることを確認し、「ファイル情報」をクリック
モバイルSWFタブの「フォーワードロック」にチェックを入れて「OK」をクリック

 
この記事では CS3 について詳しく書かれていませんが、CS3 の場合は標準ではXMPプロファイル設定ができないため、Adobe サイトから CDK をインストールする必要があります。
 
■ Flash CS3 Professional への Flashlite 3.0 CDK インストール手順
1. Adobe ダウンロードページから「Flash CS3 Professional 用 Flash Lite 3.0 アップデート」をダウンロードして fl_flashlite3_update.exe を実行し、プログラムに従ってインストールする。
 
2. Adobe Flash Lite for i-modeのウェブサイトから「Flash Lite 3.0 対応 NTT DoCoMo 携帯電話用 Adobe Flash CDK をダウンロード」を選択し、CDK(コンテンツ開発キット)をダウンロードする。
 →「Adobe モバイル デベロッパー プログラムに参加」のフォームが開きます。名前とメールアドレスが必須入力になっていますが、メール認証や会員登録もなく、ニュースレターの配信も任意なのでそれほど手間ではないです。適当にアドレスを入れて「続行」、を選択してください。この次のページでダウンロードできます。
 
3.ダウンロードしたファイル(flash_lite_3_0_image_cdk_jp.zip)を展開する。
この中に含まれるファイルのうち、「metadata_tool_readme_jp.pdf」が拡張機能の説明書、「モバイルメタデータ.swf」が拡張パネル本体です。
 
4.説明書の手順に従い「モバイルメタデータ.swf」を指定フォルダにインストールする。
swf を指定フォルダにコピーすることで、Flash CS3 Professional から拡張パネルとして利用できるようになります。
コピー先は OS によって異なり、それぞれ次のフォルダがコピー先になります。

■ Windows Vista PC:
…/Users/< ユーザ名>/AppData/Local/Adobe/Flash CS3/ja/Configuration/
WindowsSWF
■ Windows XP PC:
…/Documents and Settings/< ユーザ名>/Local Settings/Application Data/
Adobe/Flash CS3/ja/Configuration/WindowsSWF
■ Apple Mac:
…/Users/< ユーザ名>/Library/Application Support/Adobe/Flash CS3/ja/
Configuration/WindowsSWF

 
5.Flash CS3 Professional を開く。
既に開いている場合はインストールしたパネルを反映させるため、一度 Flash CS3 Professional を再起動してください。
 
6.Flash CS3 Professional で、コピー禁止させたい Flashlite 3.0 プロジェクトを開く。
インストールに成功していたら「ウィンドウ」メニューの「他のパネル」の項目に「モバイルメタデータ」が追加されています。
 
7.「ウィンドウ」メニュー→「他のパネル」→「モバイルメタデータ」を開く
「フォーワード・ロック」をチェック
 
8.右下の適用ボタン(レ点)を押して適用
 
9.Flashlite3.x としてパブリッシュ
 
以上です。