编译前保护 SWF

Posted

技术标签:

【中文标题】编译前保护 SWF【英文标题】:Protect SWF before compiling 【发布时间】:2012-11-26 04:57:11 【问题描述】:

GOOGLE 充满了所谓的 SWF 加密器/混淆器/储物柜。 但其中 99% 会导致复杂应用程序中的错误。在具有导入 3D 库或使用外部文件的应用程序中。或者在内部包含数千行代码且内部包含许多动画的复杂应用程序中。

我一直在使用 KINDISOFT 软件,我的团队使用 ADOBE FLASH CS5 和 CS6 以及 FLEX 开发了 200 多个游戏。从 FLEX 生成的 SWF 可以被 KINDISOFT 和其他 SWF 保护程序编码,而其他由 ADOBE FLASH 导出的 SWF 文件非常混乱,以至于从一开始就开始出现错误。

所以我有两个问题:

a) 当使用诸如 SWFENCRYPT 或 secureSWF 之类的软件或其他类似的产品作为输入您的 SWF 文件时,他们实际上反编译您的文件,插入混淆和一些安全性,然后重新编译?或者他们只是改变字节码?

b) 有没有办法在原始源文件中插入保护,这样可以大大降低出现错误的风险?

这个问题的目的是在编译之前找出如果您有源代码,如何保护您的 FLASH 应用程序,以便在编译后,代码将 100% 正常运行,而不是在编译后保护您的 SWF 并冒着产生错误的风险。

感谢您的宝贵时间

【问题讨论】:

"there is no viable code protection in Flash" - 彼得佐托夫。不是试图发起一场激烈的战争,但值得付出努力去实现一些已知被破坏的东西吗? 【参考方案1】:

我认为混淆软件正在改变字节码。例如,过去添加了用于破坏反编译器的无效字节码,而 Flash Player 仍然可以正确播放 swf。这是一场无休止的剑与盾之战(但似乎混淆器处于更好的位置。) 更具体地说,如果您的应用程序在混淆后中断 - 您可以做什么:

从混淆中排除动画剪辑等脆弱资源。如果您绝对需要保护它们,您可以使用 RC4 之类的简单算法(速度很快)对其进行加密,然后在受混淆器保护的部分进行解密(请参阅as3crypto)。 与 KindiSoft 合作,向他们发送错误报告以及损坏的 swf 示例。 添加您自己的混淆方法,例如在图片/其他资源中隐藏逻辑。

【讨论】:

-如何加密动画剪辑? -kindisoft 在他们的网站上甚至没有联系表格,当我给他们发电子邮件时,他们不回复; - 目前所有资源都在 FLA/SWF 文件中; 将它们加载为字节并加密字节数组。加载、解密和使用 Loader.loadBytes(虽然我在 as2 剪辑上这样做时偶然发现了错误,但 as3 应该没有问题。)

以上是关于编译前保护 SWF的主要内容,如果未能解决你的问题,请参考以下文章

如何防止SWF文件被反编译

继承受保护函数和公共变量 C++ 的多重继承编译错误

从 .htaccess 中的密码保护中排除一个文件

PWN保护机制以及编译方法

[C#防止反编译].NET 产品版权保护方案 (.NET源码加密保护)

Linux 0.11-进入保护模式前最后一次折腾内存-05