AS3の難読化、暗号化

このエントリーをはてなブックマークに追加
1Now_loading...774KB
AS3はいい言語だけど、ソースを簡単に見破られてしまうらしい。
AS3の難読化、暗号化の、ソフト、方法などについて語るスレ。

基本方法としては、コメント、スペース、改行消去、
ファイル名、変数名変更、関数の展開とかなんかな。
2Now_loading...774KB:2009/07/26(日) 17:30:13 ID:ogeyE/94
ググっていくつか見つけたサイト

Amayeta SWF Encrypt (シェア)
ttp://www.altech-ads.com/product/10003730.htm

secureSWF 3.0 (シェア)
ttp://www.ksourcerer.org/ja/31080/details-secureswf.html&usg=ALkJrhhiE3WYOPsWugMHaSSdy7sxaHlj7Q

馬鹿全 (デコンパイラ対策技術)
ttp://blog.bk-zen.com/2008/12/30/105/

Hatena::Question (ByteArrayを使って)
ttp://q.hatena.ne.jp/1229322640
3Now_loading...774KB:2009/07/26(日) 19:30:30 ID:U817qqWY
有名サイトでも暗号化対策してるところってあまりないし、
よっぽどセキュリティが重要なサイトじゃなければ
そこまでする必要性ってあるのかと思うけどね。
他人のソースから学ぶ事って多いし
そこはもちつもたれつでいい気がする
4Now_loading...774KB:2009/07/26(日) 22:15:28 ID:ogeyE/94
>>3
あんまり難読化の考えは流行っていないのか。
というか、このスレでそれを言われると・・
5Now_loading...774KB:2009/07/27(月) 10:01:23 ID:Yz+dx5tk
後、C/C++も同人ゲームに使っているけど、
他人のソースから学ぼうと思うことはないな。

自分のLVにあった作品を作りながら勉強していったが、
始めならCUIのヒットアンドブローや○×、
次にイベントドリブンや画像表示などGUIの知識を覚え、
やっとRPG等を作る感じだったので、パクる必要はない。

さらに、その時に作った画像表示簡易関数などを
マイライブラリとして蓄えることができ、
次の作品を作るときに、大きな貯金となってくれる。

逆に、この何年もかけて作ったマイライブラリを
他人に使われてしまうのはつらい。

AS3も本格的にやるなら、マイライブラリの強化を
していきたいと思うけど、難読化できないとなると、
自分には向いてない言語なのかもしれない。
6Now_loading...774KB:2009/07/27(月) 10:29:25 ID:Yz+dx5tk
7Now_loading...774KB:2009/07/27(月) 10:47:19 ID:KuZKy3SR
ASは、概念としてはオープンソースじゃないの?
8Now_loading...774KB:2009/07/27(月) 10:52:59 ID:Yz+dx5tk
>基本方法としては、コメント、スペース、改行消去、
>ファイル名、変数名変更、関数の展開とかなんかな。
>>1のだが、ファイル名変更は難しそう。

まず、使われるasファイルの数を調べて、
アルファベット順にa0.as、a1.asとかとリネームし、
public class **の部分もそれに合わす感じかな。

importフォルダを使っている場合も、
フォルダ名をf0、f1とかとリネームし、
中のasファイルもリネームしていく。

ただ、ここらへんの難読化は、
標準のコンパイルだけでもやってくれていそうな気もする。
ファイル名がmainやbattleなどである必要はまったくないし。
9Now_loading...774KB:2009/07/27(月) 11:01:23 ID:Yz+dx5tk
>>7
そうなのか。
FlexSDK3本体自体もオプソらしいけど。

C#には、標準で難読化するのが付いているみたいだが、
ASには付いていないのもそのためなんかな。

C/C++の他に、ネット系に強い
こつこつできる言語を探していただけだから、
その考えを敵に回してまでがんばりたくはないな。
10Now_loading...774KB:2009/07/27(月) 21:32:11 ID:exV789hg
C# (.NET)なんかもほとんど完璧に逆コンパイルできちゃうけど
難読化ツールも販売してる業者 (C#についてるのはそのサブセット)もいることだし
ASもケータイ向けあたりはニーズはあると思うからほしいやつが作ってみるっていうのは
11Now_loading...774KB:2009/07/28(火) 00:09:03 ID:4gd6wC0m
>>10
なるほど、C#も制限付きなのね。
標準で完全な難読化機能を付けないのは、
開発ソフトは無料だから、
変わりに稼ぐ手段として残しているのかもしれない。

>ケータイ向けあたりはニーズはある
kwsk

>ほしいやつが作ってみるっていうのは
まだ、自分は難読化についての知識がほとんどなく、
>>1に書いたぐらいの事しかできん。
それらは、標準のコンパイルで、できている事な気がする。

デコンパイラは関係無く、ソース見せろと言ってきた人に、
読みにくいのを渡すという使い方はできるかもしれないが。
12Now_loading...774KB:2009/07/28(火) 00:21:01 ID:4gd6wC0m
>>2のAmayeta SWF Encryptについてググって見た

紹介記事、トライアル版について
ttp://mfria.blog106.fc2.com/blog-entry-1411.html

難読化したのを、デコンパイラで実験
ttp://www.kyucon.com/blog/archives/000283.html

トライアル版
ttp://www.amayeta.com/software/swfencrypt/trial/

(説明文の日本語訳)(エキサイト翻訳で)
Trialバージョンは、25SWF Encryptionに制限されて、
Encrypted SWF FilesにAmayeta Watermarkを加えるでしょう。
これはFull Registeredバージョンで起こりません。
*あなたのメールは懇願に第3党によって使用されないでしょう。


殆ど記事が見つからなかった。
難読化は人気ないな・・

トライアル版試してみるか。
まだ、どういう風に解析されてしまうか分かっていないから、
難読化してもどういう効果があるかも分からないんだけど・・
13Now_loading...774KB:2009/07/28(火) 00:31:52 ID:4gd6wC0m
14Now_loading...774KB:2009/07/28(火) 02:49:10 ID:nJDvOex/
>>11
ニーズがあるというかニーズを探してる資料だったw
http://www.slideshare.net/takesako/mobaben2-flash-lite-obfuscator?nocache=9208
15Now_loading...774KB:2009/07/28(火) 10:16:30 ID:4gd6wC0m
>>14
なるほどw、サンクス。
難読化の基礎解説もあって勉強になった。
16Now_loading...774KB:2009/07/29(水) 18:15:29 ID:VFPC6Vwa
>>14に出ていた、flasm、flareを試してみたけど、
flm、flrの拡張子のファイルができたけど、
fpsや画面サイズとかしか出てこない。
ASオンリー(FlexSDK3 + FlashDevelop or JmEditor)
で作っていると逆コンパイルはされないのかな。

Flasm
ttp://www.nowrap.de/flasm.html
ttp://kozy.heteml.jp/pukiwiki/flasm%2520%25BB%25C8%25A4%25A4%25CA%25FD/index.html

Flare
ttp://www.nowrap.de/flare.html
ttp://mm51.blog.so-net.ne.jp/2007-05-23
17Now_loading...774KB:2009/07/29(水) 18:45:02 ID:eJlAHkSl
CS4に対応してる暗号化ツールは聞いた事ないね
18Now_loading...774KB:2009/07/29(水) 21:01:11 ID:VFPC6Vwa
HugFlashを試してみたが、かなり強力・・
関数名、変数名、改行などそのまま残っている感じ。
しかも、ifの要素が1文なら括弧を付けないが、
付け加えられて添削までされている・・
これなら>>1のでも効果があるな。
19Now_loading...774KB:2009/07/29(水) 21:05:43 ID:VFPC6Vwa
他の方法だとダミーの式の追加とかかな。
a + bをa + a * 2 - a - a + bにするとか。

>>17
ググってもよく分からなかったが、AS3と関連ある物?
ただ、値段は10万ぐらいするのか・・
それだけするなら、暗号化機能を付けていてほしいな。
20Now_loading...774KB:2009/08/03(月) 20:53:34 ID:sCwmq+e4
難読化ってのとは違うかも試練が、納入業者にソース渡すのがいや。

最初のうちは全ての画像とテキストを外部に置き更新させる方法で作ったが
「あとで細かい修正はこっちでやりますから」
「FLASHできる人材は当社にもいますし」
とか、笑わせてくれる。単に出費抑えたいだけなのミエミエですよ?

そんなとこはソースの管理もいい加減だし、fla修正も出来ず結局泣きついてくる
21Now_loading...774KB:2009/08/04(火) 21:42:37 ID:br/fnaG1
コアの部分は.swcにして渡せばソースはでないよ
中身は.swfだから難読化もいるにはいるけど
22Now_loading...774KB:2009/08/05(水) 00:02:22 ID:P2Vhkj2d
FreeMotionとかのswf解析できるソフトもあるけど、embedしたswfは解析できないらしいね
23Now_loading...774KB:2009/08/06(木) 22:57:46 ID:a+8bfnyE
自身は難読化は不要と考えている。逆コンパイル大いに結構。
ソース見て判るヤツはそのレベルに達している。
swfの挙動見れば大体どうやって作ってるか想像できるスキルがある。

複雑に絡んだクラスや各所に分散したソース見てもさっぱり判らんヤツ
が逆コンパイルするだけ。

気になるなら特定のURL以外起動できんようにすればいい。
URLはMD5あたりでハッシュ化しとけ、コンパイルしても動作しないし、
相当スキルがないとなんで動かんのか原因も判らん。

ローカルで一生懸命作っていざ納品で動かんとか最高だな(w
24Now_loading...774KB:2009/08/06(木) 23:39:08 ID:6BDVmTTz
Web自体みんな、ブラウザの View Sourceで他人の HTML/CSSやJavaScript みて
勉強して覚えて成長してきたっていう面もあるからそれも一理
Web開発してるやつで他人のHTMLやJavaScript みたことないなんてやつはいないだろ
勉強させてもらってつくってまた誰かの勉強の材料になってやるっていう世界
文字列として著作権表示と注意文だけいれとくのもひとつかもしれない
2523:2009/08/06(木) 23:55:32 ID:a+8bfnyE
FLASH4からやってる古参だが、10年FLASHやってて人のソース
見たのほんの数回。数える程度。
当時クラスはプロトタイプチェーンでflaに直書き。
メソッドも少ないし、逆コンパイルしたソース見る価値も多少あった。

今はオープンソースのクラス使ってバリバリコーディングするのが
当たり前。
pepervision3d利用したFlash見て一体誰が理解できるかな?
作る本人だって、英文のリファレンスなきゃ理解できんでしょ?
26Now_loading...774KB:2009/08/07(金) 01:54:50 ID:cIZD+2ie
だいぶ遅いレスだが >>5

>>マイライブラリを他人に使われてしまうのはつらい。

Twennerを使ってるか?
easingクラスを使ってるか?
swfを見ただけでは判断できないように再利用しやすい、
汎用性の高いライブラリは存在自体が判らない。
つまりどのよう高度な機能があるのかわからんswfは逆コンパイルされない。

PaperVision3Dのような特定機能に特化したライブラリは
使われている機能はわかりやすいが機能が特化しているため、
限定された条件以外では利用されない。
またメソッドやパラメタも多くなりがちでコメントがないと使い方も判らない。
27Now_loading...774KB:2009/08/07(金) 04:20:03 ID:AYCLcUB8
>>26
まだAS3は簡単なRPGを作れるLVだから、
上げられた物をちょっと調べたがさっぱり。
難読化ツールもCで作る予定。

コメントがないと使い方も分からないというのは、
自分のC/C++のでもそうなりそう。
自分でさえ、ちょっと触っていないと忘れてしまってるし。
28Now_loading...774KB:2009/08/07(金) 12:50:47 ID:lphzuUi6
>>23に同意
プログラミングのプの字も知らない人(営業とか)に限って
「スクリプトを公開するとぱくられる」なんて言っちゃう始末
29Now_loading...774KB:2009/08/08(土) 00:11:23 ID:PEsuBQGc
ただ隠したいだけの難読化はともかく、暗号化は例えばcgi使うようなswfにはやるべきだろうな
30Now_loading...774KB:2009/08/08(土) 01:18:07 ID:+ZENzysD
クライアントがソースの編集を希望する場合に限り
複雑なクラスはswc化して懇切丁寧なコメントもつけて納品してる。
必要ならばリファレンスマニュアルも作る。

理由は編集する第三者が理解不能になるから。
クラスパス、深くネストしたMC、attachするMC、外置きファイル等
FLASHかじった程度では厳格な記述を要求するas3と併せて手に負えない。

納品後の無駄な問い合わせはゴメンだ。

だから出来る限りコアなクラスはswcでブラックボックス化
ソースの見通しを明るくしている。

それでも、びっくりするぐらい問い合わせが来るし、
「修正はやっぱりそちらで」とさじを投げるクライアントも多い。
クライアントがWEB制作会社の場合でもだ。

残念ではあるが、解析しようとする人より高いスキルで記述したソースは
すでに十分な難読化になっているのだ。
31Now_loading...774KB:2009/08/08(土) 06:53:14 ID:RJotHwlw
>>30
まぁチャンコロとチョンは理解した上でコピーするんですけどね。
32Now_loading...774KB:2009/08/08(土) 20:28:55 ID:JLEXFt/a
理解できる脳みそあるなら
コピーしてぱくるより作ってしまったほうが早いと言ってるだろ
文字も読めないのかよ
33Now_loading...774KB:2009/08/08(土) 21:46:06 ID:+ZENzysD
スキルの高い人のAS3.0ならアラビア語で書かれた量子力学の論文みたいなもの。
スキルの高い人のAS2.0でも日本語で書かれた量子力学の論文みたいなもの。

難読化を気にする人は新聞の三面記事程度のソースを書く程度のレベルだと気づけ
34Now_loading...774KB:2009/08/09(日) 13:41:44 ID:fzs9fDXy
むしろ、ムービークリップ毎に散らばって書かれているAS2コードの方が解読が難しい
35Now_loading...774KB:2009/08/09(日) 19:22:12 ID:FP4ymUQy
相手(その仲間)がソースを勝手に使ってしまうか、
そのスキルがあるかとかは分からないわけだから、
作品(ソース)を難読化するか、分かりやすくするかは、
このスレタイ的にも、ギャラや相手の態度など、
作者の都合で決めてしまえばいいと思う。
36Now_loading...774KB:2009/08/10(月) 11:47:41 ID:LDRuPOtH
ニコニコ動画もyoutubeもどうやって作ってるか大方予想がつく。
3Dだろうが、物理演算だろうがゲームだろうが、
FLASH何年もやってりゃだれでも当たり前に判る。
FLASHで高度なことはできないからね。

スクリプトは重要じゃない。アイデアや操作性が重要なんだよ。
最初に流行らせた人が勝ち。
37Now_loading...774KB:2009/08/14(金) 19:03:49 ID:urdLq8u3
お前ら偉そうだな
そんなに見下ろしたいのか?
38Now_loading...774KB:2009/08/16(日) 11:38:56 ID:GsHP7gz/
現状もっとも高性能なデコンパイラってMotion Decompiler 3(SWF Decompiler 5相当)になるのかな?
これはflaファイルまで復元してかなりすごいと使ってて思った → 素人でも結構理解できてしまう

なので>>32-33のような意見はちょっと違うと思ったけど。
39Now_loading...774KB:2009/10/11(日) 07:29:53 ID:mNqCGxd6
暗号化は無理かもね
40Now_loading...774KB:2009/10/21(水) 03:26:38 ID:Hl7HAM/y
HDDのクラッシュでflaを失い、swfしか残っていないものをデコンパイラで再生したら、かなり全部回復してびっくり。
逆に言えばデコンパイルしちまえば丸見えということだ。
41Now_loading...774KB:2009/10/21(水) 23:41:19 ID:KgAeGBoH
ソースは見られることを前提に、セキュリティも意識して書かないといかんてことだね
42Now_loading...774KB:2010/07/06(火) 19:28:18 ID:0KdIt75V
古いスレ発見・・・。CS5が出たけど、暗号化方法でオススメある?

CGIではない、生のソケットでのクライアント・サーバーシステム作ったけど、
逆コンパイルされると、プロトコルのキーがばれてこまるんだよね・・・。
まぁ、主要なところは全部サーバーが計算するから、
クライアントのFlash側は委託するだけの存在だけど。
43Now_loading...774KB:2010/07/24(土) 23:53:11 ID:VJtE8e42
>>42
キーをハッシュ化して渡すじゃだめ?
swfがサーバーと通信するんならその程度しか方法はないとおもう・・・

以前FLASHでSQL文を生成してた部下がいたな・・・ぉぃぉぃ
44Now_loading...774KB:2011/12/25(日) 02:01:18.09 ID:+/bmagbQ
>>43
答えが出ました。SSL使うことで、キーの件に関しては問題はなくなりました。
プロトコルの部分に関しては、難読化とかしてお茶を濁します。
45電脳プリオン 忍法帖【Lv=40,xxxPT】(1+0:8) 【30.8m】
AS3って何よ?