Flashゲームのswfを守るために
Flashゲームが他のサイトに無断に掲載されたり、中身を書き換えられたりするのを防ぐいくつかのTipsを紹介します。
はじめに
swfファイルはデコンパイル可能であり、ダウンロードして他サイトに掲載するのも簡単なので、どうしても無断転載、中身を書き換えての無断再利用が後を絶ちません。利用者が膨大であるインターネットではモラルに期待しても無意味ですので、作る側がある程度対策をするしかありません。面倒ですがFlashゲームを作る場合には出来るだけ以下のような対策を行っておきましょう。
swfを暗号化する
市販のソフトでswfを暗号化しましょう。swfはそのままでは簡単にデコンパイル可能でソースがそのままみられてしまいます。まず、これを行わないとどんな対策も無意味になるのでかならずやっておきましょう。市販のソフトで暗号化するとデコンパイルしてもかなり読みにくくなり、場合によってはデコンパイル自体ができなくなります。暗号化ソフトとしては例えば海外ではsecureSWFというソフトが人気があります。無料で暗号化するならmochi adsに登録するという方法もあります。とはいえ暗号化と言っても完全に解読不能になるわけではないので過信は禁物です。またソースコードはある程度守られますが、画像や音声ファイルは取り出せてしまいます。swf内の画像の差し替え、定数などの書き換えも防げません。
swfの無断転載を防ぐ
直リンク禁止
.htaccessを編集してswfを直接他サイトから呼び出せないようにしましょう。「swf .htaccess」などで検索するといろいろなサンプルが見つかると思います。
サイトロック
他サイトでswfを公開されないために、root.loaderInfo.urlの中のswfのパスをチェックするコードを入れておきましょう(AS3)。もちろん、そのコード自体を外されてしまうと意味が無いので、必ずswfは暗号化しておきましょう。
参考: http://flash.polig.daa.jp/?eid=1030765
盗まれても良いように
ブランディング
スプラッシュ画面や「他のゲーム」ボタン、クレジット画面などでブランディングとトラフィックを自サイトへ導く工夫をしておきましょう。そうすればアクセス解析で自分のサイトへどこのサイトから訪れたかを見て、勝手にswfをホストしているサイトを見つけられるので削除依頼を送るなどの対応ができます。またはそのまま放っておいて自サイトの宣伝とすることもできます。
ゲーム内広告入りの配布バージョンを作っておく
自サイトでの公開にこだわらないなら、Mochi adsなどを使ってゲーム内広告入の配布バージョンを作ってswfを配布してしまいましょう。合法的に手に入れられるものをわざわざswfを書き換えて盗む人はあまりいません。ゲーム内広告により利益が得られますし、ブランディングを行い、配布バージョンと自サイトの公開バージョンに差をつけておけば(例えばランキングやゲームの面数など)、より有効にトラフィックを導けるでしょう。
参考: http://www.mochimedia.com/
画像の差し替え対策
暗号化してブランディングを行っても、その画像やリンクを書き換えられる場合があります。その対策として、ブランディング用の画像のサイズ、md5やSHA256ハッシュなどをゲーム実行時にチェックして合わないとゲームが進行できないようにするという方法があります。暗号化していてもゲーム内の定数なども書き換え可能ですから、単純なハッシュのチェックだけだとハッシュ値も一緒に書き換えられる場合もあるのでなるべく複数の異なる方法でチェックしましょう。
さらに別swfに読み込んでスプラッシュ画面が表示されている間、ゲームswfをvisible=falseにしたりサイズを小さくしたりして代わりに別画面を表示するハッキングが行われるときもあります。対策は、スプラッシュ画面表示中の座標、alpha、visible、scaleX、scaleYなどをチェックする事、そしてIDEでタイムラインに配置するのではなく、プログラム的にstageにスプラッシュ画面をaddChildすることです。
さらに、スプラッシュ画面表示中にjavascriptでswfの上に独自広告を入れてしまうハッキングもあるのですが、これについては有効な対抗手段があるかどうかわかりません。
ハッキングする方もいろいろな方法を編み出してくるのでこれらの対策はかなり面倒になります。有効な対策はブランディングはスプラッシュ画面のみならず、クレジット画面や「他のゲーム」ボタン、そしてあちこちにロゴを入れたりすることなどしかないかも知れません。
参考: http://www.flashgamelicense.com/blog/2010/11/how-to-protect-your-game-from-being-rebranded/
どうしてもコードのみならず画像や音楽など、すべてを守りたい場合
独自の暗号化をする
たとえばswfのバイナリーデータを任意の方法で置き換え保存するAirアプリなどを作成して独自の暗号化を行い、実行時にはできた暗号化ファイルを別swfのローダーで読み込んで、そのローダーで復号化するようにします。これで画像や音楽、ソースコードなどすべてを守ることができます。もちろん、ローダーのswfは市販のソフトで暗号化しておく必要があります。手間がかかること、復号化に時間がかかるのでユーザーを待たせてしまうことなど、難点もありますがどんなデコンパイラーでも画像や音楽さえ取り出せなくできます。ただし、ローダーの復号化アルゴリズムが解析されてしまう可能性は残りますから、完璧に守れるというわけではありません。
終わりに
ここではswfをハッキングする代表的な方法と対策をあげましたが、これらは常にいたちごっこで日々変わっていきます。国内ではこういった情報がまとめられている事は非常に少ないです。できるだけ海外のFlashゲーム関係コミュニティサイトなどを見て新しい情報を取り入れておきましょう。