番外編最終回 Flash完成! でも最後の仕上げを忘れずに


杉山 俊春
三井物産セキュアディレクション株式会社
テクニカルサービス事業部
コンサルタント
2007/4/13
(Illustrated by はるぷ)

とうとう星野君が作成していたFlashが完成! 早速赤坂さんはそれを見せてもらいました。しかし赤坂さんの見方はちょっとベクトルが違っていました……。
Flashをめぐる赤坂さんの探求、番外編最終回!

 星野君、Flash完成! 赤坂さんは早速……

星野君 「よし!できた!」
赤坂さん 「お、Flashできたの?」
星野君 「はい、まあ、すごく簡単なものですけど、基本的なとこは大丈夫なはずです」
赤坂さん 「へぇ〜、早いねぇ。見せて見せて」
星野君 「いま、僕のPCでWebサーバ立ち上げてあるので、見れるはずですよ」

 赤坂さんは星野君のPCにアクセスし、完成したFlashを見せてもらった。

赤坂さん 「へー。なんか結構ちゃんとできてるって感じがするね」
星野君 「こういうの結構得意ですからね♪」

 赤坂さんは星野君の作ったFlashを一通り見ると早速逆コンパイルをしてみた。Flashは逆コンパイルすることが可能で、逆コンパイル用のツールも作られている。

 例えば、swfファイルの逆コンパイルツール「Flare」では、リスト1のActionScriptのコードを含むswfファイルを逆コンパイルすると、リスト2のような形で元のActionScriptが判別できる状態にすることが可能だ。

var str:String = "Hello";
trace( str );
test_func();

function test_func(){
     trace('function_test');
     getURL('http://www.example.co.jp/flash_test.html');
}
stop();
リスト1 元のActionScriptソース

movie 'C:\flash_test.swf' {
// flash 8, total frames: 1, frame rate: 12 fps, 550x400 px, compressed

  frame 1 {
    function test_func() {
      trace('function_test');
      getURL('http://www.example.co.jp/flash_test.html', '');
    }

    var str = 'Hello';
    trace(str);
    test_func();
    stop();
  }
}
リスト2 Flareにより逆コンパイルされたソース

 ActionScript内に重要な情報を記載している場合、このような方法でその情報を見られてしまう恐れがあるため、ActionScriptは、見られても問題のない状態にしておく必要がある。また、デバッグ用のtrace関数を利用している場合、そのまま残ってしまう可能性があるため、公開する際にソース内に残らないようにすることが望ましい(ツールによっては設定によってswfファイルの生成時に自動でtrace関数を取り除くことができる)。

赤坂さん 「へー。中身こんな感じなんだー」
星野君 「え? 中身?……ちょっと何やってんですか。やめてくださいって」
赤坂さん 「なんか、こうきれいに逆コンパイルされちゃうのもなんかちょっとうれしくないねぇ」
星野君 「うーん。そうですねぇ……。逆コンパイルされても読みづらいように難読化するツールもあるみたいですけども〜」

 逆コンパイル対策として、難読化ツールというものも存在している。難読化を行うツールは、抑止力としての効果は期待できる。しかし、完全にActionScriptを秘匿できるものではないため、根本的な対策にはならないということを理解したうえで利用することが必要である。

1/3

Index
Flash完成! でも最後の仕上げを忘れずに
Page1
星野君、Flash完成! 赤坂さんは早速……
  Page2
デバッグコードを残すのはFlashでも危険

 

Page3
いろいろできるFlashだからこそ


星野君のWebアプリほのぼの改造計画 連載インデックス


Security&Trust フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Security & Trust 記事ランキング

本日 月間