Flex / Air 混淆

20

我已经用Flex编写了(大部分)应用程序,并且担心保护源代码。我启动了Trillix swf decompiler的演示版,并打开了安装到我的Program Files目录中的swf文件。我看到了我写的所有ActionScript包。虽然有大量代码,但我对这些包并不太担心,因为没有mxml文件它看起来还是相当难以使用的。我认为它们被转换为ActionScript,或者至少我希望如此。然而,我仍然希望探索混淆。

是否有人有Flash / Actionscript 3 / Flex混淆器的经验?您能推荐一个好的产品吗?

4个回答

21
由 maclema 建议的程序并不能真正防止攻击者获取源代码 - "包装应用程序" 需要被解密,因此攻击者将能够发现您使用了 AES(或任何其他算法),并以类似的方式获取解密密钥 (因为它需要在某个地方以明文形式存在)。一旦他掌握了这些,他将能够轻松解密您的 SWF 文件。

唯一可靠的解决方案(嗯......)是某种混淆器 - 我们使用的是适用于 Flex 的 Amayeta 最新版本 - 请参见http://www.amayeta.com/software/swfencrypt/


1
我认为这是应该被接受的答案。 - Snow Blind

12

以下是我的建议:

  • 将应用程序编译为SWF文件。然后使用AES加密SWF。

  • 创建一个“包装”应用程序,使用URLLoader将加密的SWF加载到ByteArray中。

  • 使用as3crypto库在运行时解密swf。

  • 解密后,使用Loader.loadBytes将解密的SWF加载到包装应用程序中。

这样做会使获取您的代码变得更加困难。虽然不是绝对无法破解,但至少增加了一些安全性。

对于AIR应用程序,您可以在向最终用户交付应用程序时保留SWF加密状态。然后,您可以提供一个注册密钥,其中包含用于解密SWF的密钥。

此外,这是一个AS3混淆器的链接。我不确定它的效果如何。 http://www.ambiera.com/irrfuscator/index.html


JPEXS反编译器具有“在内存中搜索SWFs”的功能,可以立即发现解密后的swf文件。加密步骤不再适用于使获取代码更加困难。 - CausingUnderflowsEverywhere

3

我认为,最简单和最安全的解决方案是将maclema和Borek的答案结合起来:

如果您没有从一开始就将代码混淆包含在您的流程中,并且您的应用程序相当大,则混淆代码可能会让您头痛:如果您使用了远程包(并且没有向混淆器声明此内容),如果您在对象或动态类中使用了太多未经类型化的变量......那么很可能会使您的应用程序损坏。

因此,如果您在大型应用程序上使用maclema的解决方案,并在包装器上使用混淆(这是一个小应用程序,很容易混淆),则您的代码将是最安全的,而麻烦最少。只有非常愤怒的盗版者才会花时间反向工程混淆以解密包....如果有人如此渴望您的应用程序代码,那么要么与CIA有关,要么您已经非常富有(或两者兼备)。

感谢大家的回答。


0
我最近发布了一款使用Flash的iOS和Android游戏。我在互联网上寻找一个好的免费程序来保护我的SWF源代码,但是没有找到任何东西,所以我自己写了一个。它仍在开发中,使用时需要自担风险,但对我来说很有效。
它已经在github上发布了。请查看并告诉我您的想法。

https://github.com/Teesquared/flasturbate

我上传了一个Windows二进制文件,但如果你想尝试它,我建议你按照说明自己构建。

这个混淆器直接作用于SWF文件。目前它只重命名符号,但它是建立在一个框架上的,未来可以支持改变字节码。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接