关于动作脚本3:Flex /空气混淆

关于动作脚本3:Flex /空气混淆

Flex / Air obfuscation

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

是否有人对Flash / ActionScript 3 / Flex混淆器有任何经验? 你能推荐一个好的产品吗?


Maclema建议的过程并不会真正阻止任何攻击者获取源-"包装器应用程序"将需要解密,以便攻击者能够发现您使用AES(或任何其他算法),并且他将获得解密密钥以类似的方式(因为它需要在某处以明文形式显示)。一旦掌握了这一点,他将能够轻松地解密您的SWF文件。

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


这就是我要做的。

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

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

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

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

这将使获取代码变得更加困难。并非没有,但是更加困难。

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

另外,这是指向AS3混淆器的链接。我不确定它的运作情况如何。
http://www.ambiera.com/irrfuscator/index.html


好吧,我认为,最简单,最安全的解决方案是结合Maclema和Borek的答案:

如果从一开始就没有在过程中包含混淆代码,并且应用量很大,那么混淆代码可能是一个很大的难题:如果您使用远程软件包(并且没有向混淆者声明),那么混淆可能会使您的应用程序损坏如果您习惯了对象或动态类中的许多未类型化变量...。

因此:如果您在大型应用程序上使用maclema的解决方案,并在包装??器(这是个很小的应用程序,很容易混淆)上使用混淆处理,那么代码是最安全的,而麻烦最少。
只有非常生气的海盗才会花时间对混淆进行逆向工程,然后再解密程序包....好吧,如果有人希望您的应用程序代码太糟糕,则可能与CIA有关,或者您已经非常富有(或两者都有)

谢谢大家的答案


我最近发布了使用Flash的iOS和Android游戏。我在互联网上寻找了一个很好的免费程序来保护SWF中的源代码,却找不到任何内容,因此我写了一个。它仍在开发中,"使用风险自负",但对我有用。

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

https://github.com/Teesquared/flasturbate

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

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


推荐阅读