Index > Flashコンテンツのコピーを防ぐ(コピープロテクト)USBメモリを使った方法
Sun, February 24, 2008

Flashコンテンツのコピーを防ぐ(コピープロテクト)USBメモリを使った方法

先日、 {u:Flashで作成した製品PR用のコンテンツ(swf)をUSBメモリを使ってコピープロテクトをしたい} という相談がありました。

普通、FlashコンテンツはCD-Rなどで配ることが多いので、 その手のCD-Rで実現できるコピープロテクトツールを使うことになると 思うのですが、今回の場合、諸事情により UDRW Technology G3という技術を使った USBメモリを使って実現してくれ、 という話でした。

案件の整理

コピープロテクト実現方法

UDRW G3 規格のUSBメモリには、 固有のIDが割当られているので、 それをもとにSWFコンテンツを再生するか/しないかをコントロールする コードを{u:FlashPlayer}に追加すればよい。

現実は厳しい、しかし SWFKitがあった

さっそく、 FlashPlayerに自前のコードを追加する方法があるか調査してみたが、 Adobe提供のFlashPlayerをカスタマイズすることはできないようだ。
IEにFlashPlayerをインストールする(プラグインする)と Shockwave Flash Object という ActiveXがインストールされ、これを利用して、 自前でswfを再生できるソフトウェアを 書くことができるようなのだが、Shockwave Flash Object を含めたソフトウェアの配布は ライセンス上許可されていないようだし、リンクするだけだと、 デモを実行するPCにFlashPlayerがインストールされていないと、デモが正常に作動しない... (インストールされているFlashPlayerのバージョンの問題もあるし)

英語のWikipediaの swf2exe の項目をチェックすると、 Adobe以外にもプロジェクタ(exe)をつくるソフトウェアがあることが判明。 それらの中には、標準のプロジェクタではできない機能を追加できるものもあることがわかった。

ここに列挙されているものを調査してみると、 SWFkitという製品があり、 この製品では、FFish ScriptというJavaScript風のスクリプトを使ってカスタマイズでき DLLを読み書きできる機能がある。

これを使って、exe形式のプロジェクタを生成することで問題が解決できた。 (つまり、USBメモリがない限り再生できないFlashプロジェクタの作成ができた。)

SWFKitは、exeを生成し、そのなかに、FlashPlayerを同梱するのだが、 商用製品なので、当然FlashPlayerの配布ライセンスを取得しているので、 合法的にFlashPlayerを含んだexeプロジェクタを生成できる(...ようです)。

結局、ActionScript - FFish Script を経由してDLLにアクセスできるため、 FlashでWindows上で作動するアプリケーションを書くことができるということです。
通常のFlashでは、当然ローカルファイルシステムやローカルリソースへの アクセスは厳しく制限されていますが、 SWFKitを使えば、DLLを通じて、ローカルリソースにアクセスできるので、 普通のスタンドアローンのアプリケーションと同じことができます。

こりゃすごい...と思ったけど、その目的のためには、 いまでは、Adobe AIRがありますからね。 さらにAIRには、Webkitなども付属していて、アプリケーションを書く環境が 整っているため、SWFKitが有効な領域はかなり限定されそうです。

結論 SWFKitを使ってDLL経由で許可されたUSBメモリを使っているかどうか判定する

以上の調査から、結局、SWFKitを使い、 FFish Scriptで、DLL経由で、USBメモリに埋め込まれている固有IDを取得、 それが許可されたIDかどうか判定することで、 デモを再生するか、しないかを決める、という方法でコピープロテクトを実現。

できてしまうと簡単な話なのだが・・・ この手の苦労はお客さんにわかってもらえないのがつらい。

 Twitter
follow me on Twitter
 Categories