如何确保AIR项目中的SWF文件无法像常规SWF文件一样打开?

时间:2011-07-07 19:30:56

标签: android flash actionscript-3 security air

我正在使用Flash CS5.5制作游戏并将其导出到APK文件(AIR for Android)。

麻烦的是APK文件实际上只是一个ZIP文件,所以你可以提取内容,里面有我的游戏作为常规SWF文件。任何人都可以将其上传到任何网站并在那里玩游戏。

除非通过Android在APK文件中打开,否则我不希望SWF文件正常工作。

如果已从APK文件中提取SWF文件并将其作为普通SWF文件打开,是否有任何方法可以通过ActionScript 3代码了解?

3 个答案:

答案 0 :(得分:1)

无论如何,瑞士法郎都会“开放”。但是,在决定是否实际允许swf运行更多代码之前,您可以在文档类中检查操作系统是什么。看看flash.system.Capabilities,你会找到让你嗅探操作系统的工具。

答案 1 :(得分:0)

Capabilities.os的可靠性不高,因为Linux用户可以在网络浏览器/桌面上查看它(My HTC androic报告Linux OS)。

据我所见,版本特定于播放器版本,应始终报告“AND [版本字符串]” - 示例“AND 10,2,150,60”

if( flash.system.Capabilities.version.slice(0,3).toUpperCase() != 'AND' ){
    // ....oh noes! hide and destroy everything!
}

P.S。我为你下载了flash.system.Capabilities的脚本:1。

http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/system/Capabilities.html#version

它已经存在了一段时间(参见播放器9 / air 1.0 /等)并且在API ref中定义,因此它不仅仅是一个黑客

版本属性
version:String [只读] 语言版本:ActionScript 3.0 运行时版本:Flash Player 9,AIR 1.0,Flash Lite 4 指定Flash Player或Adobe®AIR®平台和版本信息。版本号的格式为:platform majorVersion,minorVersion,buildNumber,internalBuildNumber。平台的可能值是“WIN”,“MAC”,“LNX”和“AND”。以下是版本信息的一些示例:

 WIN 9,0,0,0  // Flash Player 9 for Windows
 MAC 7,0,25,0   // Flash Player 7 for Macintosh
 LNX 9,0,115,0  // Flash Player 9 for Linux
 AND 10,2,150,0 // Flash Player 10 for Android

答案 2 :(得分:0)

首先要注意的是:从技术上讲,绝对没有办法阻止患者和专职人员解压缩并尝试在网络上使用SWF。

但是你真正能做的就是让黑客受苦并且很难逆转你的代码。实际上,这是唯一重要的事情:您可以说,当打破防御的努力成本和利润与保护应用程序的成本相当时,您的应用程序受到保护。

  • 在您的代码中,检查可以检测Android环境中的启动的任何内容。操作系统,如scriptocalypse建议和/或Android API的可用性。阻止应用程序从不适当的envirenment开始。或者,如果您愿意,可以更改应用流程以便启动,但如果未在Android上启动,则适用于主要残障。
  • 使用secureSWFSWFEncrypt
  • 之类的混淆器

就个人而言,我使用的是secureSWF,但有很多 - 根据自己的喜好选择。