2008-08-07 75 views
21

我已經寫了(大部分)Flex中的應用程序,我關心的是保護源代碼。我啓動了一個Trillix swf decompiler的演示,並打開了安裝到我的Program Files目錄中的swf文件。我看到我寫的所有動作包都在那裏。即使存在大量的代碼,我也不太關心這些包,因爲如果沒有mxml文件,它仍然很不可用。我認爲他們轉換爲動作,或至少我希望。不過,我仍然想探索混淆。Flex/Air模糊處理

有沒有人有Flash/Actionscript 3/Flex混淆器的經驗?你能推薦一個好產品嗎?

回答

13

這是我會做的。

  • 將您的應用程序編譯爲SWF文件。然後使用AES加密SWF。

  • 使加載加密的SWF到使用的URLLoader

  • 使用as3crypto庫在運行時解密SWF的ByteArray「包裝」應用程序。

  • 解密後,使用Loader.loadBytes將解密後的swf加載到包裝應用程序中。

這會讓你的代碼變得難上加難。不是不可能,但更難。

對於AIR應用程序,您可以在向最終用戶提供應用程序時保留SWF加密。然後,您可以提供一個註冊密鑰,其中包含用於解密SWF的密鑰。

此外,這裏是一個鏈接到AS3混淆器。我不確定它的效果如何。 http://www.ambiera.com/irrfuscator/index.html

20

由maclema建議的程序不會真正阻止任何攻擊者獲取源代碼 - 「包裝應用程序」將需要未加密,因此攻擊者將能夠發現您使用AES(或任何其他算法),並且他將以類似的方式獲得解密密鑰(因爲它需要在某個明文中)。一旦他有了,他將能夠輕鬆解密你的SWF文件。

唯一可靠的解決方案(以及...)是某種混淆器 - 我們使用Amayeta,它適用於Flex的最新版本 - 請參閱http://www.amayeta.com/software/swfencrypt/

+1

我認爲這是應該接受的答案。 – 2013-08-22 07:07:54

3

嗯,在我看來,最簡單,最安全的辦法是maclema和博雷克答案的組合:

模糊處理的代碼可以是一個大頭痛的,如果你不包括它從一開始,如果你的程序的aplplication是相當大的:如果您使用對象或動態類中的許多unTyped變量,則使用遠程程序包(並且未將其聲明爲混淆器)時,混淆可能會導致應用程序損壞......

因此:如果你在你的大型應用程序上使用maclema的解決方案,並在你的包裝器上使用模糊處理(這是一個很容易混淆的小應用程序),那麼你的代碼將是最安全的,並且hasle leas噸。 只有一個非常生氣的海盜纔會花費時間對混淆進行反向工程,然後解密軟件包....那麼,如果有人想要你的應用程序代碼洙壞它要麼CIA有關,或者你已經很有錢(或兩者)

感謝大家對你的答案

0

我最近發佈使用Flash的iOS和Android遊戲。我環顧了互聯網尋找一個很好的免費程序,以保護我的SWF中的源代碼,並找不到任何東西,所以我寫了一個。它仍處於開發階段,它是「在您自己的風險中使用」,但它對我有用。

它在github上發佈。檢查一下,讓我知道你的想法。

https://github.com/Teesquared/flasturbate

我上傳的是Windows二進制文件,但我建議你按照說明來建立它自己,如果你想給它一個嘗試。

此混淆器直接在SWF文件上工作。它目前只重新命名符號,但它建立在一個可以支持將來改變字節碼的框架上。