我已经在Flex中编写了(大部分)应用程序,我担心保护源代码。我启动了Trillix swf decompiler的演示并打开了安装到Program Files目录的swf文件。我看到我写的所有动作包都在那里。即使有大量代码,我也不太关心软件包,因为如果没有mxml文件,它似乎仍然无法使用。我认为它们会被转换为动作脚本,或者至少我希望如此。但是,我仍然想探讨混淆。
有没有人有使用Flash / Actionscript 3 / Flex混淆器的经验?你能推荐一款好产品吗?
答案 0 :(得分:20)
maclema建议的过程不会真正阻止任何攻击者获取源 - “包装器应用程序”将需要未加密,以便攻击者能够发现您使用AES(或任何其他算法)并且他将以类似的方式获得解密密钥(因为它需要在某处以明文形式)。一旦他有了这个,他就能轻松解密你的SWF文件。
唯一可靠的解决方案(好吧......)是某种混淆器 - 我们使用最新版本适用于Flex的Amayeta - 请参阅http://www.amayeta.com/software/swfencrypt/。
答案 1 :(得分:13)
这就是我要做的事。
将您的应用程序编译为SWF文件。然后使用AES加密SWF。
创建一个“包装器”应用程序,使用URLLoader将加密的SWF加载到ByteArray中
使用as3crypto库在运行时解密swf。
解密后,使用Loader.loadBytes将解密的swf加载到包装器应用程序中。
这将使得获取代码变得更加困难。并非不可能,但更难。
对于AIR应用程序,您可以在将应用程序交付给最终用户时对SWF进行加密。然后,您可以提供一个注册密钥,其中包含用于解密SWF的密钥。
此外,这是指向AS3混淆器的链接。我不确定它的效果如何。 http://www.ambiera.com/irrfuscator/index.html
答案 2 :(得分:3)
嗯,在我看来,最简单,最安全的解决方案是maclema和Borek的混合答案:
如果您从一开始就没有将代码包含在您的进程中,并且您的应用程序非常大,那么混淆代码可能是一个很大的麻烦:如果您使用远程软件包(并且没有将其声明为此),则混淆可能会使您的应用程序损坏如果您习惯于对象或动态类中的许多unTyped变量....
所以:如果你在你的大型应用程序上使用maclema的解决方案并在你的包装器上使用模糊处理(这是一个很容易混淆的小应用程序),那么你的代码将是最安全的,而且是最少的。 只有一个非常生气的海盗才会花时间对混淆进行逆向工程,然后解密包....如果有人想要你的应用程序代码那么糟糕,那就是CIA相关或你已经非常富有(或两者兼而有之)
谢谢大家的答案
答案 3 :(得分:0)
我最近发布了一款使用Flash的iOS和Android游戏。我环顾互联网寻找一个很好的免费程序,以保护我的SWF中的源代码,找不到任何东西,所以我写了一个。它仍处于开发阶段,“使用风险自负”,但它对我有用。
它在github上发布。看看它,让我知道你的想法。
https://github.com/Teesquared/flasturbate
我上传了一个Windows二进制文件,但如果您想尝试一下,我建议您按照说明自行构建。
此混淆器直接在SWF文件上运行。它目前只重命名符号,但它建立在一个可以支持将来改变字节码的框架上。