【问题标题】:How to prevent ActionScript code decompilaton如何防止 ActionScript 代码反编译
【发布时间】:2010-10-18 15:40:12
【问题描述】:
是否有可靠的方法来防止我的操作脚本代码(as2 或 as3)被复制(例如,如果其中有一些 IP)?
我知道有些工具可以反编译 flash 代码,因此很容易对其进行逆向工程,而且我还看到一些工具声称能够以不可窃取的方式混淆 actionscript 代码,但我想知道它的可靠性如何他们是...
你知道吗?谢谢!
【问题讨论】:
标签:
actionscript-3
actionscript-2
obfuscation
reverse-engineering
【解决方案1】:
根据定义,这是不可能阻止的。
原因很简单,代码需要在客户端运行,所以需要客户端能够读取。
您能做的最好的事情就是努力(需要时间)去做,以致于无利可图。
Flash 有一个内置功能可以防止使用密码进行反编译。我不确定它是如何工作的,我猜是某种形式的加密。
您可以尝试在运行时将感知数据溢出并加入它,对其进行加密并从服务器获取解密密钥。
但最终你真的无能为力。除非您不希望用户输入加密密钥(密码或文件)。
Flash 中没有内置加密,但有几个免费库,例如 crypto lib http://code.google.com/p/as3crypto/。
【解决方案2】:
我没有找到可靠且可持续的方法来混淆代码。如果有办法混淆代码,我敢打赌:
- 这会影响代码的性能
- 有人为该混淆方法制作/找到反编译器只是时间问题
我不认为依赖客户端代码的安全性是一种好的做法。即使无法反编译代码,swf 也会在客户端上运行,并通过用户可以访问的网络连接与 Internet 进行通信。可以嗅探数据包,并且可以轻松分析所有正在传输的数据。
我认为你应该找到一种方法来开发一个安全的应用程序,即使考虑到客户知道你所做的一切。您应该尝试使用服务器端约束并在使用之前过滤所有输入。此外,从服务器端脚本请求所有敏感数据,而不是将其嵌入到您的 AS 代码中可能是一个好的开始。