Flex / Air混淆[关闭]
Posted
技术标签:
【中文标题】Flex / Air混淆[关闭]【英文标题】:Flex / Air obfuscation [closed] 【发布时间】:2010-09-05 12:14:17 【问题描述】:我已经(大部分)用 Flex 编写了一个应用程序,并且我关心保护源代码。我启动了Trillix swf decompiler 的演示并打开了安装到我的 Program Files 目录中的 swf 文件。我看到我写的所有动作脚本包都在那里。即使有大量代码,我也不太关心包,因为如果没有 mxml 文件,它似乎仍然无法使用。我认为它们已转换为动作脚本,或者至少我希望如此。但是,我仍然想探索混淆。
有没有人使用过 Flash/Actionscript 3/Flex 混淆器?你能推荐一个好的产品吗?
【问题讨论】:
【参考方案1】:我最近发布了一款使用 Flash 的 ios 和 android 游戏。我在互联网上寻找一个很好的免费程序来保护我的 SWF 中的源代码,但找不到任何东西,所以我写了一个。它仍在开发中,并且“使用风险自负”,但它对我有用。
它已在 github 上发布。看看吧,让我知道你的想法。
https://github.com/Teesquared/flasturbate
我上传了一个 Windows 二进制文件,但如果你想尝试一下,我建议你按照说明自行构建它。
此混淆器直接作用于 SWF 文件。它目前只重命名符号,但它建立在一个可以支持将来更改字节码的框架上。
【讨论】:
【参考方案2】:嗯,在我看来,最简单和最安全的解决方案是混合 maclema 和 Borek 答案:
如果您从一开始就没有将其包含在您的流程中并且您的应用程序非常大,那么混淆代码可能会让人头疼:如果您使用远程包(并且没有将其声明为混淆器)如果你习惯了对象或动态类中的许多无类型变量......
所以:如果您在大型应用程序上使用 maclema 的解决方案并在包装器上使用混淆(这是一个很容易混淆的小应用程序),那么您的代码将是最安全的,而且麻烦最少。 只有非常愤怒的盗版者才会花时间对混淆进行逆向工程,然后解密包......好吧,如果有人想要你的应用程序代码太糟糕,那要么与 CIA 相关,要么你已经非常富有(或两者兼而有之)
谢谢大家的回答
【讨论】:
【参考方案3】:maclema 建议的程序不会真正阻止任何攻击者获取源 - “包装应用程序”需要不加密,以便攻击者能够发现您使用 AES(或任何其他算法)并且他将以类似的方式获取解密密钥(因为它需要在某处以明文形式存在)。一旦他有了这个,他将能够轻松地解密您的 SWF 文件。
唯一可靠的解决方案(嗯...)是某种混淆器 - 我们使用适用于最新版本 Flex 的 Amayeta - 请参阅 http://www.amayeta.com/software/swfencrypt/。
【讨论】:
我认为这是应该被接受的答案。【参考方案4】:这就是我要做的。
将您的应用程序编译为 SWF 文件。然后使用 AES 加密 SWF。
制作一个“包装”应用程序,使用 URLLoader 将加密的 SWF 加载到 ByteArray 中
使用as3crypto 库在运行时解密 swf。
解密后,使用 Loader.loadBytes 将解密后的 swf 加载到包装应用程序中。
这将使获取您的代码变得更加困难。并非不可能,但更难。
对于 AIR 应用程序,您可以在将应用程序交付给最终用户时对 SWF 进行加密。然后,您可以提供一个注册密钥,其中包含用于解密 SWF 的密钥。
另外,这里是一个 AS3 混淆器的链接。我不确定它的效果如何。 http://www.ambiera.com/irrfuscator/index.html
【讨论】:
JPEXS 反编译器具有“在内存中搜索 SWF”功能,可以立即发现解密的 swf。加密步骤不再适用于更难获取代码。以上是关于Flex / Air混淆[关闭]的主要内容,如果未能解决你的问题,请参考以下文章
创建 AIR 文件时出错:无法生成时间戳:握手期间远程主机关闭连接