Flash 保护驻留在另一个swc中的swc中的方法调用

Flash 保护驻留在另一个swc中的swc中的方法调用,flash,actionscript-3,alchemy,Flash,Actionscript 3,Alchemy,我有一个alchemy编译的swc,其中包含执行某些关键算法的方法。仅当用户出于安全目的获得授权(从在线服务购买许可证)时,这些方法才应返回值。因此,我计划在此基础上添加另一个SWC,它包含所有许可代码。但是当我在自定义swc中导入炼金术生成的swc时,所有的炼金术方法都暴露了出来。任何关于如何限制他们访问的想法。i、 e.我希望这些方法只用于自定义组件中,而不用于使用自定义组件的用户。欢迎来到flash安全世界,这里没有这样的东西。问题是客户端总是有你的代码。因此,您不能使用任何策略来始终保护

我有一个alchemy编译的swc,其中包含执行某些关键算法的方法。仅当用户出于安全目的获得授权(从在线服务购买许可证)时,这些方法才应返回值。因此,我计划在此基础上添加另一个SWC,它包含所有许可代码。但是当我在自定义swc中导入炼金术生成的swc时,所有的炼金术方法都暴露了出来。任何关于如何限制他们访问的想法。i、 e.我希望这些方法只用于自定义组件中,而不用于使用自定义组件的用户。

欢迎来到flash安全世界,这里没有这样的东西。问题是客户端总是有你的代码。因此,您不能使用任何策略来始终保护您的代码不受客户端的攻击。即使对二进制文件进行加密和解密,代码也始终位于内存或密钥中。这就是为什么下一代游戏公司试图编写在服务器上运行的游戏,而只是为最终用户提供远程用户界面的原因之一。所以,基本上,要真正保护任何东西,唯一的方法就是在服务器端编写功能。有关更多信息,请参阅此评论:


我想说的是,我不是在胡说八道。我曾经在alchemy for flash中开发了一个实时二进制加密/解密方案,并试图成为通过这种服务使flash安全的天才。虽然是的,也许这样的东西可以保护内容不受基本用户的攻击,但您始终会将二进制文件和源代码或至少加密算法+密钥公开给最终用户,因此,最终会有人来破坏您的系统。

Ascension Systems的答案是正确的:您无法防止客户端上运行的代码被盗。你所能做的就是混淆


在这种情况下,您可以在编译之前在您的炼金术源代码上使用。这至少会使炼金术功能(FSM_Z18BLAHBLAHBLAHBLAHBLAH等)变得杂乱无章且难以理解。

感谢您提供的详细信息和链接,但我希望在此应用程序中避免使用服务器-客户端解决方案。这是一个AIR应用程序,我从Alchemy获得的计算应该是实时的,我减少服务器请求/响应的决定也是如此。@paleozogt提出了一个很好的观点。此外,如果您能够完成任务并具有SSL功能,则可以在flash中创建基本的文件加密/解密算法,在运行时加载swc,通过SSL获取密钥,解密swc,加载并立即从内存中销毁密钥。尽管某些足够精明的人仍然可以破坏这个系统,所以你也可以在服务器端进行解密,然后将swc字节流到套接字上,然后使用一次性密钥从内存中加载对象。关于我的上述建议,我自己也尝试过,只要文件相对较小(5兆或更少),并且密钥不长得离谱,客户端的性能就非常好。服务器端技术确实在这种客户端解决方案中工作得很好,但这有点离题,无论如何,感谢所有对此有想法并试图解释其可能性的人。但不能满足确切的要求。模糊处理是一种很好的迷惑黑客的方法,尽管它并不能证明你的swc是黑客。不管怎么说,我明白flash中任何进入客户端的东西都是可以被破解的,除非我把它放到某个空气中