`

如何保护swf文件,加密代码(译)

阅读更多

在我的培训课程中我常常被问到有关保护SWF影片的问题。这里有两种方法:一种是加密代码,让它难以被别人反编译和使用;另一种方法是限制SWF文件在哪些地方可用,这样别人就不能随意将你的SWF影片放在他们的站点中。

    有许多商业的和免费的加密工具能够帮助你保护你的代码,其中常见的有三个ASO,SWFEncrypt,SecureSWF,我就不多讨论他们了。这里有一些方法可以借鉴用来限制SWF影片在哪些地方可以使用。

1、SWF在哪个域里面运行?
SWF文件能够检测在哪个域中运行以及是否被允许存在于这个域中。你可以写一个这样的函数:
[code]
function isDomainAllowed( allowed:Array ):Boolean
{
    var lc:LocalConnection = new LocalConnection();
    var domain:String = lc.domain();

    for( var i:Number = 0; i < allowed.length; ++i )
    {
        if( domain == allowed[i] )
        {
            return true;
        }
    }
    for( var i:Number = 0; i < allowed.length; ++i )
    {
        if( domain.substr( - ( allowed[i].length + 1 ) ) )
                        == "." + allowed[i] )
        {
            return true;
        }
    }
    return false;
}
[/code]

    这个函数接收一个影片允许运行域的数组做为参数,并通过这个数组检测影片是否运行在被允许的域中。如果SWF影片在其中的任何一个域或者子域中,那么函数返回true,否则返回false。
    你可以这样使用它:

以下内容为程序代码:

var domains:Array = new Array(
    "bigroom.co.uk",
    "soshow.org",
    "localhost"      // allow local testing
    );
if( isDomainAllowed( domains ) )
{
    gotoAndPlay( “content” ); // play the movie
}
else
{
    gotoAndPlay( “forbidden” ); // display some error message
                                // - more about this later

2、SWF运行在哪个播放器版本里面?
    在前面的方法中,数组中包含的本地值是允许在本地flash 开发环境或者本地WEB中测试影片的。它仍然是允许用户下载SWF并在本地运行,或者载入到其他 工程。如果你想禁止SWF的本地使用,你只需要将localhost值从允许域数组中移除。然而,如果你想严格控制本地使用一些实例(例如:仅在Flash IDE中),你需要测试影片运行在哪个版本的播放器中。可以采用如下操作:

[code]
function isPlayerAllowed( allowed:Array ):Boolean
{
    var player:String = System.capabilities.playerType;

    for( var i:Number = 0; i < allowed.length; ++i )
    {
        if( player == allowed[i] )
        {
            return true;
        }
    }
    return false;
}
[/code]
System.capabilities.playerType的可能值有:
ActiveX ——IE中的ActiveX 控件
PlugIn——其他浏览器中的插件
独立播放——独立播放器
外部播放——FLASH IDE中测试影片模式
isPlayerAllowed函数可以这样使用:

 

以下内容为程序代码:

var players:Array = new Array(
    “ActiveX”,
    “PlugIn”,
    “External”      // allow local testing
    );
if( isPlayerAllowed( domains ) )
{
    gotoAndPlay( “content” ); // play the movie
}else
{
    gotoAndPlay( “forbidden” ); // display some error message
}

3、从服务器中载入文件
第三种方法就是从你的网站服务器中载入一个文件。如果载入文件失败,则忽略影片。就像这样:

 

以下内容为程序代码:

function testWithServer( callback:Function ):Void
{
    var receiver:LoadVars = new LoadVars();
    receiver.onLoad = callback;
    receiver.load( “http://soshow.org/testswf.txt” );
}

可以这样使用:

 

以下内容为程序代码:

function testResult( success:Boolean ):Void
{
    gotoAndPlay( “content” ); // play the movie
}
else
{
    gotoAndPlay( “forbidden” ); // display some error message
}

stop();
testWithServer( testResult );

    这是非常基础的,这个文件可能是一个空的文本文件--不需要任何内容。如果文件能够被载入并且独立于载入测试文件的主机的交叉域,那么这个函数就成功了。 如果安全策略允许影片载入文件那么就成功了。这样做的优点是我们可以更改服务器上的安全策略文件来更新允许的域,而不用修改flash影片。

    使用一个不相关的链接是很重要的,这样能够使一部分人通过放置一些文件在服务器上来简单地避开安全设置。
还有很多方法可以增强这种方法,例如:
发送一个域信息到服务器,从服务器返回检测这个域是否被允许;
每次从flash影片加载的页面中通过获得唯一ID并通过FlashVars传递给影片,然后当询问是否被允许运行时SWF将信息反馈给服务器,服务器允许每个ID仅仅使用一次;
通过在查询及回应过程中加密(可以查看ASCrypt的一些加密代码)。
但是在大多数情况下,一个绝对URL和一个或者多个(你可以给每个SWF文件一个唯一的安全策略文件,它可以通过System.security.loadPolicyFile()加载进来)交叉域策略文件也就足够了。

总结:
这三种方法可以单独使用,也可以一起使用。一般来说,我喜欢在flash影片中使用前两个,而不从服务器获取内容。相对应的,最后一 种方法可以让你不用编辑flash影片也能更新被允许的域,这样也有它的优点。注意,如果你的源代码能够被反编译,那么这些测试都能够一起被简单的移除 掉,所以你需要结合其他的加密算法。

如果不允许回放怎么办?
如果你的影片不允许播放怎么办?有两个基本方法你可以借助:
告诉用户发生了什么事情--显示一条信息,像这样:“这个影片/游戏/其他可以在http://soshow.org/funkyswf.html 观看到”。
因此播放器需要一点缓冲的时间,创建一个初始循环来完成这个。
我根据个别情况来选择使用这些方法。
第二种方法给潜在的盗用者极少的线索去了解发生了什么,但是你还是要用第一种方法来告诉用户到哪里去合理的或者SWF影片(包括价格多少)。

我希望这些能对你有用。你采用哪种安全技术呢?


另外一种方法是通过数据库,利用数据库来存储多个常量,这些常量可以在运行的时候载入并在应用程序中使用。
如果这个结合你提到的工具使用,那么这些都是非常困难的,首先判断发生了什么,其次成功的获取每个变量的无效值并重新发送来代替数据库的功能。事实上,更多的努力是值得的!

分享到:
评论

相关推荐

    swf 去除文件保护 去除加密 swf文件解锁.

    然而,为了保护内容不被非法复制或编辑,许多SWF文件会被添加保护措施,包括加密。本篇文章将深入探讨如何有效地去除SWF文件的保护和加密,以便于提取和编辑其中的资源。 首先,理解SWF文件的加密机制至关重要。SWF...

    Swf文件加密V9

    SWF文件加密是一种针对Adobe Flash创建的SWF(Shockwave Flash)文件进行保护的技术。SWF文件通常用于在网页上展示交互式动画、游戏或多媒体内容。由于它们包含可执行代码,因此可能存在被盗用或篡改的风险。"Swf...

    SWF 加密 SWF Encrypt

    然而,由于SWF文件通常包含敏感代码或内容,保护它们免受未经授权的访问和复制变得至关重要。这就是SWF加密的重要性所在。 **SWF加密** SWF加密是一种安全措施,旨在保护Flash内容不被非法解密、逆向工程或篡改。...

    SWF Flash加密,加密Flash

    1. **版权保护**:通过加密,可以防止他人复制、篡改或逆向工程分析SWF文件,从而保护创作者的知识产权。 2. **内容安全**:加密可以阻止恶意用户在未经许可的情况下访问敏感信息,如用户数据或商业机密。 3. **商业...

    swf二进制封装加密防止反编译

    由于SWF文件是可执行的二进制文件,它们可以被反编译工具解析,从而暴露源代码,这可能对软件的知识产权构成威胁。因此,“swf二进制封装加密防止反编译”是开发者们关注的重要话题,以保护他们的劳动成果不被轻易...

    SWF加密工具

    一款视频编辑软件...可以给视频加密...

    swf 去除文件保护 去除加密 swf文件解锁

    然而,为了保护内容不被非法复制或编辑,许多SWF文件会被作者进行加密或添加保护措施。本教程将详细介绍如何有效地去除SWF文件的保护,以便于提取和编辑其中的资源。 首先,理解SWF文件的加密机制至关重要。SWF文件...

    最新swf加密工具EasySwf1.0

    · 对SWF文件及内容加密,市面上大多数反编译工具难以破解 · 对Actionscript3.0脚本进行有效混淆 · 支持2.0版本SWF加密 · 针对不同应用场合,设计多个加密等级 · 智能化加密技术,傻瓜化操作 · 支持文件拖曳...

    SWF去保护软件

    SWF去保护软件的工作原理涉及到SWF文件的解析、反编译和代码分析。首先,软件会读取SWF文件的二进制数据,解析出其中的帧、动作脚本(ActionScript)、图形和其他组件。接着,它会识别并处理保护机制,比如解除加密...

    百度文库反编译其swf文件获得最全的解析文件

    这些工具能够解析SWF文件的结构,包括ActionScript代码、图形、帧序列等,并尝试重构为FLA格式。不过,需要注意的是,反编译可能不总是能完全恢复原始源代码,因为编译过程可能导致信息损失,尤其是如果源代码经过...

    超强的swf加密软件HA_Encrypt405_CZ

    5. **分发与保护**:将加密后的SWF文件发布给用户,并确保他们符合设定的访问条件。 总的来说,HA_Encrypt405_CZ是一款专为SWF内容创作者设计的版权保护工具,通过多种加密技术和定制化选项,帮助保护创作者的知识...

    flash/swf加密、混淆软件

    可对swf文件进行加密、混淆代码以保护作品不被破解盗用;同时有对swf添加水印的功能,可申明、保护作者的版权。 DoSWF是一款flash/swf加密绿色免安装软件。 1.支持as2及as3的加密。目前反编译器完全看不到代码 2....

    全套iebook官方无加密swf按钮原文件(共7套)

    对于开发者来说,这些无加密的SWF文件意味着可以自由地查看和编辑源代码,学习如何使用ActionScript控制按钮的行为,以及如何结合图形设计实现动态效果。ActionScript是一种基于ECMAScript的脚本语言,用于控制SWF...

    SWF Encrypt 加密

    SWF Encrypt是一款强大的Flash文件加密工具,主要用于保护开发者创作的SWF(ShockWave Flash)文件,防止未经授权的复制、反编译或盗用。这款工具以其高效的安全性能和易用性在IT行业内受到广泛认可。 1. **SWF文件...

    swf动画作品加密软件

    如何保护swf文件,加密代码2009/09/22 04:56 P.M.有许多商业的和免费的加密工具能够帮助你保护你的代码,其中常见的有三个ASO,SWFEncrypt,SecureSWF,我就不多讨论他们了。这里有一些方法可以借鉴用来限制SWF影片在...

    解析swf文件 源码

    本篇将深入探讨SWF文件的解析过程和源码分析。 首先,我们需要了解SWF文件的结构。SWF文件基于二进制格式,由一个文件头开始,接着是数据块,这些数据块包含了定义形状、图像、声音、动作脚本等所有元素。文件头...

    ASV2012(Action Script Viewer)解密反编译DoSWF加密Flash之图文教程

    DoSWF是一种常见的Flash文件加密方式,它可以对Flash文件进行加密保护,防止未经授权的访问和盗用。但是,使用ASV2012,我们可以轻松地破解和反编译DoSWF加密的Flash文件。 三、使用ASV2012解密反编译DoSWF加密...

    SWF文件修改工具SWF文件修改工具

    使用SWF文件修改工具时,需要注意的是,由于SWF文件通常包含加密和保护措施,不恰当的修改可能会导致文件损坏或无法正常运行。因此,在进行修改时,建议先备份原始文件,并熟悉基本的Flash和ActionScript知识。 在...

    swf_file_format_spec_v10.rar_flex文件格式分析_swf反编译

    开发者可能会通过混淆ActionScript代码或使用加密技术来保护他们的知识产权。另一方面,反编译也可能被用于恶意目的,如逆向工程、提取敏感数据或创建恶意软件。 五、反编译工具 市面上有许多SWF反编译工具,如...

    网页flash-swf文件下载(办)方法

    这种方法适用于那些没有加密或限制直接访问的SWF文件。不过,对于大多数嵌入式Flash内容,直接URL往往隐藏在网页代码中,需要通过开发者工具或查看网页源代码来寻找。 #### 四、使用下载管理器批量下载 对于需要...

Global site tag (gtag.js) - Google Analytics