Flex / Air混淆

我已经写了(大部分)Flex中的应用程序,我很关心保护源代码。我启动了一个 Trillix swf反编译器的演示,并打开了安装到我的Program Files文件中的swf文件目录。我看到我写的所有动作包都在那里。即使存在大量的代码,我也不太关心这些包,因为如果没有mxml文件,它仍然很不可用。我认为他们转换为动作,或至少我希望。不过,我仍然想探索混淆。

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

0

4 答案

这是我会做的。

  • 将您的应用程序编译为SWF文件。然后使用AES对SWF进行加密。

  • 制作一个使用URLLoader将加密的SWF加载到ByteArray中的“包装器”应用程序

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

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

这会让你的代码变得更难。不是不可能,但更难。

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

Also, here is a link to an AS3 obfuscator. I am not sure how well it works though. http://www.ambiera.com/irrfuscator/index.html

0
额外

maclema建议的程序不会真正阻止任何攻击者获取源代码 - “包装应用程序”将需要未加密,因此攻击者将能够发现您使用AES(或任何其他算法),并且他将获得以类似的方式解密密钥(因为它需要在某个明文中)。一旦他有了,他将能够轻松解密你的SWF文件。

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

0
额外
我认为这是应该接受的答案。
额外 作者 Snow Blind,

那么,在我看来,最简单和最安全的解决方案是混合了maclema和Borek的答案:

如果您从一开始就没有将代码包含在您的流程中,并且您的应用程序非常庞大,那么混淆代码可能会成为头痛的问题:如果您使用远程软件包(并且未将其声明为混淆器),混淆可能会导致应用程序损坏,如果你习惯对象或动态类中的许多unTyped变量....

所以:如果你在你的大型应用程序上使用maclema的解决方案,并在你的包装器上使用模糊处理(这是一个很容易混淆的小应用程序),你的代码将是最安全和最安全的。 只有一个非常生气的海盗会花费时间对混淆进行逆向工程,然后对包进行解密....如果有人希望你的应用程序代码太糟糕,那么要么是CIA相关的,要么是你已经非常富有(或者两者都有)

谢谢大家的答案

0
额外

我最近使用Flash发布了iOS和Android游戏。我环顾了互联网寻找一个很好的免费程序,以保护我的SWF中的源代码,并找不到任何东西,所以我写了一个。它仍处于开发阶段,它是“在您自己的风险中使用”,但它对我有用。

它在github上发布。检查一下,让我知道你的想法。

https://github.com/Teesquared/flasturbate

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

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

0
额外