21

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

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

4

4 回答 4

21

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

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

于 2008-09-25T11:03:36.783 回答
13

这就是我要做的。

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

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

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

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

这将使获取代码变得更加困难。不是不可能,而是更难。

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

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

于 2008-08-07T16:28:34.337 回答
3

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

如果您从一开始就没有将其包含在您的流程中并且您的应用程序非常大,那么混淆代码可能会让人头疼:如果您使用远程包(并且没有向混淆器声明),混淆可能会使您的应用程序损坏如果您习惯于 Objects 或动态类中的许多 unTyped 变量......

所以:如果你在你的大应用程序上使用 maclema 的解决方案并在你的包装器上使用混淆(这是一个很容易混淆的小应用程序),那么你的代码将是最安全的,而且麻烦最少。只有非常愤怒的盗版者才会花时间对混淆进行逆向工程,然后解密包......好吧,如果有人想要你的应用程序代码太糟糕,它要么与 CIA 相关,要么你已经非常富有(或两者兼而有之)

谢谢大家的答案

于 2011-04-29T16:33:33.710 回答
0

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

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

https://github.com/Teesquared/flasturbate

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

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

于 2014-01-12T17:31:28.873 回答