我一般都是flash的开头,我正在尝试加强对.swf文件的保护。
我的一个想法是将.swf文件分开,就这样说;创建一个具有敏感但重要的功能和值的新swf,将其存储在我的网络服务器上,并让启动器在通过一些验证过程后请求文件。只有这个想法的缺陷,我不知道如何在我的项目中添加一个类(如果这是正确的术语?)。我转换了另一个.swf文件,其中包含使用Base64加密的相同方法,但我不太确定如何添加外部.as文件以在我的项目中执行。
当然,我还发现了其他方法,例如使用DCOMSoft SWF Protector(效果不大)和混淆程序(也可以反过来)。我最近发现了一个名为AS3Crypto的.SWC,我不知道如何使用。我已将文件添加到我的AS3属性中,但就我所知。 AS3Crypto的其余部分及其谜团对我来说仍然含糊不清,我无法通过Google找到任何有用的信息。
我真的想将.swf拆分成不同区域的部分以使其更难逆转,但我不太确定它会有多么有效,更不用说如何实际操作了。关于外部类(术语?),由于我无法找到如何用我的项目实现它,我想到从已发现的反转.swf中挽救函数并将它们添加到我的内部脚本中。即使这样,软件包也以public class $Base64 extends Object
开始 - extends
我假设只是为对象添加了额外的功能,但我不认为这是完全必要的。
答案 0 :(得分:0)
如果你想保护你的swf没有身体可以编译它并查看你的ActionScript编码,那么你应该用swf加密工具加密你的swf,比如Amayeta SWF Encrypt。您可以查看http://www.amayeta.com/并获取一些有用的详细信息。
感谢。
答案 1 :(得分:0)
基本上,如果有人做得足够多,他们就会解密并拼凑信息。我理解你的使命,当我开始AS3时,我有同样的感觉。
保护瑞士法郎的最常见方法是:
如果您认真保护代码,则必须在服务器端执行此操作。
答案 2 :(得分:0)
您可以使用 AS3 Obfuscator
保护您的ActionScript代码AS3Obfuscator是一个应用程序,它允许您对ActionScript源代码进行模糊处理,使其在反编译时难以阅读。
您可以看到示例here
不要忘记您可以将您的SWF锁定到特定域名
function pageDomainCheckInit(event:Event):void {
if (url != "http://www.domainName.com/siteFolder/sitePage.html") {
warning_txt.text="This file is running on the wrong URL. Content Access Restricted!";
closeBoxTop.x = 0
closeBoxTop.visible = true;
closeBoxTop.height= stage.stageHeight/2
Tweener.addTween(closeBoxTop,{width:stage.stageWidth, alpha: 0.8, time:1, transition:"easeInOutExpo"});
closeBoxBottom.x = stage.stageWidth
closeBoxBottom.visible = true;
closeBoxBottom.height= stage.stageHeight/2
Tweener.addTween(closeBoxBottom,{width:stage.stageWidth, time:1, alpha: 0.8, transition:"easeInOutExpo"});
} else {
warning_txt.text=" ";
closeBoxTop.visible = false;
closeBoxBottom.visible = false;
}
stage.removeEventListener(Event.ENTER_FRAME, pageDomainCheckInit);
}
stage.addEventListener(Event.ENTER_FRAME, pageDomainCheckInit);
有关详情,请点击here
答案 3 :(得分:0)
创建Flash文件(或其他客户端文件,如xml等)时,您应该做的最好的事情是尽可能使它变得愚蠢。 不要在其中存储密码,id,guid或重要数据,而是创建服务器端服务/ API,根据用户输入将所有数据传递到Flash /客户端。制作安全的API比创建受保护的SWF文件更容易。
使用'charles proxy'或fiddler监控自己的项目http流量也是个好主意(还有firefox / chrome插件)。了解数据是如何传输的,以及数据是否可预测以及是否易于操作。
不过,如果你想要混淆,我知道一个很酷的混淆技巧:可以将swf嵌入swf作为bytearray。创建一个新的flashproject并将此类标记为Main-document。将原始.swf文件放在项目中。确保将文档设置(舞台大小等)设置为与输入SWF相同。 package
{
import flash.display.Loader;
import flash.display.Sprite;
/**
* @author Mark Knol
*/
public class ByteArrayLoader extends Sprite
{
[Embed(source='../swf/myFlashFile.swf', mimeType='application/octet-stream')]
private static const bytes:Class;
public function ByteArrayLoader()
{
Loader( addChild( new Loader() ) ).loadBytes( new bytes() );
}
}
}