破解Flash的利器
透视Flash
SWF Browser是一款重量级的Flash破解利器,它会将swf文件剥皮抽筋,让你看个清清楚楚,当然还能将其为我们所用。你可以到它的大本营http://www.swifftools.com/去下载它。要特别声明的是SWF Browser安装完之后可以注册使用或不注册使用,不注册的话会少掉很多关键性的功能,我们以下的讲解都是按照注册后的版本来的。
#2 1.主要功能
首先让我们来熟悉一下SWF Browser的界面((图1))。最上方水平的一条就是SWF Browser的主菜单,从左到右分为3个板块——文件菜单,主功能菜单,附加功能菜单。文件菜单区的两个下拉菜单File和About用处不大,前一个用来退出SWF Browser,后一个主要就是用来注册SWF Browser的。

主功能菜单区里的东西是用来操作控制SWF Browser破解swf文件的,这部分的菜单按钮不是下拉的,而是即按即见效的。其中最主要的就是Show/hide search和Directory Shortcuts,按下它们在软件界面的左侧会分别出现选择文件目录和搜索swf文件的互动窗口:上面的是按Directory Shortcuts后出现的选择文件目录窗口;下面的是按Show/hide search后出现的搜索swf文件窗口。
按下界面中间部分的Start Search按钮,稍等片刻,我们选择的目录下的所有swf文件都被列出来了((图2)),当然,如果你在搜索过程中已经发现了想要破解的swf文件,只要再按一下Start Search按钮就会停止,很方便吧。

介绍过了主功能菜单之后我们接着看附加功能菜单区,这里也有两个按钮,前一个是用来将swf文件做成屏幕保护程序的,后一个有钥匙标志的按钮Unprotect Movie才是SWF Browser的重要附加功能。我们都知道,一些精心制作的Flash动画中有很多好的矢量图素材,只要将swf在Flash中导入就可以得到,但谁想让自己的创意成果为他人所用呢?于是很多有好的素材的swf文件都是保护输出的,不能直接在Flash中导入,Unprotect Movie按钮就是为了破解swf文件的保护而设的,也可以说是在SWF Browser中使用最简单的一项破解功能。只要选中一个设有写保护的swf文件,原本是不可用状态的Unprotect Movie按钮就被自动激活了,我们只要对着它点一下就会有个文件窗口弹出,让我们把破解了保护的swf文件存盘,然后打开Flash将新存的swf导入就可以了,和原来设有写保护的swf分毫不差。
看完了菜单按钮我们再来看看界面最下面的一条控制栏吧((图3)),从左到右也分为三个部分。

第一部分是用来控制swf动画的播放的,以方便我们破解时观看动画;第二部分的第一个按钮Add Favorites是用来将自己一直要用的swf文件添加到Favorites里的,其他几个按钮则是控制Flash动画的显示状况的;最后一部分只有一个按钮,是用来建立.exe可执行文件的。总体来说这条控制栏不很重要,和界面右边的swf文件状态显示窗口((图4))的作用没法比。swf文件状态显示窗口上方共有5个按钮,可以通过它们了解到swf文件的各个信息。

Graphics按钮不用多说肯定是用来了解swf文件中位图的情况的,选中一个swf文件后对它点一下,在swf中所有的位图文件都原形毕露了,选中一张图片后就能在下方的预览窗口中看见它的尊容,而点一下上方的Save as bitmap按钮的话就会弹出窗口让你将swf中的位图另存为.bmp文件。
Movie Clips按钮((图4))是用来挑出swf文件中的电影夹组件的,其功能异常强大,不但能挑出主场景下的电影夹组件,更是能将组件内含的电影夹组件一网打尽。如果在主场景下有个电影夹组件,其中还内含另一个电影夹组件,SWF Browser就能自动列出两个独立的电影夹组件。同样选中一个电影夹组件后点上方的Save as swf就能将电影夹组件另存为一个独立的swf文件。
Sound Events按钮负责的是提取swf中的音乐文件,选中一段音乐后按上方的Click number to save就能将其存为一段独立的.mp3文件,用Winamp可以把mp3转为wave文件供你使用。至于Sound Events旁边的Sound Streams按钮就是用来提取声音流的。
SWF Internals按钮没办法将什么东西从swf文件里挖出来,但却能告诉我们整个swf文件的信息((图5)),以一个树形目录来表示。在Header里从上到下分别是签字、版本号、文件大小、最小x坐标、影片的宽、最小y坐标、影片的高、启始帧、播放速度及整个swf文件一共包含多少帧等信息。

好了,主要功能和操作就介绍到这里,下面就让我们选一个swf文件来个实弹演习吧。
#2 2.实际操作
按前文所述,选择好初始目录后点击Start Search找到自己要破解的swf文件,按一下控制条上的播放按钮就可以先观察一下这段动画。与此同时我们可以发现在软件右边的swf文件状态显示窗口里出现了Sound1、Sound2……Sound6等一列信息((图6)),这说明我们要破解的这个swf文件里有6段声音事件,分别点选它们并用Click number to save将它们另存为.mp3文件,再用Winamp转为wave文件。

将音乐搞定后我们按一下swf文件状态显示窗口上的Movie Clips按钮,会发现该swf文件主场景下有两段电影夹组件,老规矩,将它们分别存盘。因为这段swf在输出时加了写保护,我们要点一下附加功能区里的Unprotect Movie按钮将之解锁并另存为一个swf文件。
还有些重要信息别忘了看,点击Swf Internals按钮,我们就能得知该swf文件宽762,高400,每秒播放21帧,共963帧等重要信息。好了,破解告一段落,让我们打开Flash,来重组这段动画。
打开Flash,新建一个影片,点选Modify下的Movie,将影片的宽设置为762,高设置为400,播放速度设置为每秒21帧,跟原文件一样。设置完影片属性后选择File Import,将破除了保护的swf文件导入到Flash,我们就有了一长串共963个关键帧了,和原来的那个swf文件一样长。
如果你等不及了想先播放一下的话就会发现在原来的swf中有两个动画不动了,变成了静止的图片。那是因为电影夹组件在导入Flash后只有内含的第一帧会得到保留。
别急,还记得我们前面在SWF Browser里另存为swf的两个电影夹组件吗?看看吧,它们不正是缺少的两部分动画吗。在Flash里用Insert下的New Symbol新建两个电影夹组件,分别将另存为swf的两个电影夹组件导入到新建的两个电影夹组件里,我们这样做是为了可以让它们保持自己原来的坐标位置,如果直接在主场景中导入的话它们就会跑到左上角去了。然后我们要做的就是在主场景合适的地方新建层,将电影夹组件放进去,并参考原来的swf文件作适当的大小位置调整就可以了。现在再播放的话我们就会发现自己有了个克隆版的动画了。
等等,还少了音乐。没问题,只要将转为wave的音乐文件在Flash中再导入就可以了,至于位置嘛,只能照着原来的swf文件大致调整了。
克隆版是有了,如果想修改呢?我建议大家想改的话尽量改文字,你会发现所有的文字都是独立的组件,改的工作量很小,也不影响动画,把一段1000帧的英文版swf动画全改成中文版也不过是个把小时的事情。
还有麻烦?什么?作者把Flash动画创建成了.exe文件?幸运的是已经有人想到了这点,并做出了破解的软件,下面就让我们来看看吧。
#1 破解.exe文件
这款利器名叫Swifty Xena Pro,是一款标准的绿色软件,不安装,不写注册表,在Win98和Win2000下都工作良好,需要的朋友可以到http://buraks.com/swifty/去下载它,才100多KB。它可以把swf文件从Flash标准的exe文件、Aftershock的exe文件和Director文件中解出来。
需要注意的几点是它会自动将解出的swf文件存在被破解的.exe的同一目录下;破解完后会自动生成一个.bak的备份文件;它能破解的文件格式可以通过修改type.ini文件来软升级,前提是要有足够的信息哦,笔者用的这个版本本来不能解Flash5的exe文件,但下载了新的type.ini文件后就可以了。
启动Swifty Xena Pro,下面有三个按钮分别是Extract files、Try replacing和About,后两个基本没用,点一下Extract files按钮就会弹出窗口让你选择.exe文件,选择好之后按下OK按钮就可以了,马上就会跳出一个小窗口告诉你swf文件被解出来了,再按下OK按钮就完成了,这时我们可以在Swifty Xena Pro中看到被解出来的swf文件的信息,还是个Flash5的swf呢。好了,快去.exe文件所在目录去找你的swf文件吧,运行起来和原来的exe文件一模一样的!
#1 剥离层结构
swf文件里还有一个重要的结构就是层,而SWF Browser并不能把层解出来,所以就会有了Swifty Zeus这款200多KB的破解利器。我们可以到http://buraks.com/swifty/去下载它。
先说明一下,Swifty Zeus所做的并不是能将swf文件在Flash中导入后还保持有层结构,它所做的是将swf文件中的每一层都分别另解为一个新的swf文件,而且它不光将主场景里的层解出来,还会将组件里的层都解出来。你要做的就是在Flash中将它们分层导入,这将会使你对整个动画的结构了解得很清楚。
打开Swifty Zeus后就会发现它的界面很简单,只有一个按钮((图7))。按下按钮后就会弹出窗口让你选择一个swf文件来破解。选一个Flash文件试试吧。按下打开后很快就会在Swifty Zeus的界面下部显示出解出了多少层swf文件。同Swifty Xena Pro一样,它会自动将新解出来的一系列swf文件存放在被破解的swf文件的同一目录下。

#1 获取Action Script
大家学习Flash时感到最头痛的是什么?让前面介绍的三款破解软件都无能为力的是什么?对了,那就是Flash的Action Script。这款了不起的破解利器的名字就叫Action Script Viewer。在http://www.flashcastle.com/download/software/asv20.zip可以下载它。
顾名思义,Action Script Viewer能让我们查看内嵌入swf文件的Action Script,当然,它能做的不只是这些,当它将Flash4或Flash5的swf文件中的Action Script反编译出来并以文本形式显示出来后,你可以将它另存为新的文件,解读它,修改它。
Action Script Viewer也是个绿色软件,唯一要求的就是要安装有Shockwave Flash ActiveX以支持它对swf文件的预览显示。我们选择一个含有Action Script的swf文件打开,就有新的界面窗口出现。这个窗口叫swf窗口,如果打开多个swf文件的话就会有多个swf窗口,基本上Action Script都在这个窗口进行查看。按钮选项还是很多的哦((图8)),在初始界面上则会多出Options和Utility两个下拉菜单。

#2 1.了解菜单功能
接下来让我们来看一看初始界面上新出现的Options和Utility两个下拉菜单里都有些什么。
首先是Options菜单,这里面的东西基本上是用来定制swf窗口的,因为打开多个swf文件的话就会有多个swf窗口,所以就可以分别针对每个swf窗口做不同的设置,使自己用起来更方便。
Show preview选项是用来设置预览窗口里是否显示组件内容的。
Move origin to centre选项是要配合预览窗口来使用的,它可以将预览窗口里的显示内容往右下方移动,也就是将swf文件中的坐标 0,0 移动到预览窗口的中央,以方便我们查看左上方的组件内容。
Show unmodified frames选项被激活后,所有帧的状况将都显示在swf窗口中,否则的话,就只有关键帧会被显示。
Show unmodified layers选项被激活后会显示每一帧中的所有的层,反之就只会显示有变化的层。
Show long action scripts选项一定要始终都处于被激活状态,否则的话Action Script Viewer将只反编译开头的一些Action Script,在swf窗口中你就可能没法看到完整的Action语句。
Word wrap action scripts 选项没什么用,用来开关Word Wrap,基本不影响查看Action语句。
Colorize action scripts选项倒是个很有用的功能,激活它后在swf窗口中显示的Action Script的不同的语法部分将用不同的颜色显示,看起来是方便了很多。
Change action script font选项可以允许你自己选择显示Action Script的字体,眼睛不好的朋友可以将字体调大一点。
Library options选项只有在swf窗口处于Library标签(请参看后文对swf窗口的详解)下时才会看出作用,可以显示各种信息。
Load default options选项是将当前的swf窗口恢复到软件的默认设置。而Save options as default选项则是将当前窗口的设置定为默认设置。
Utility下拉菜单里的选项要相对少一些,但许多重要的功能选项都在它下面哦,就让我们来看一看吧。
Change background color选项是用来改变预览窗口的背景色的,不要以为这是个华而不实的功能哦!在swf文件中包含的有些内容可能是白色的或颜色很淡,我们只要将预览窗口的背景色调整得深一些就能很好地观察他们了。
Copy action script as text选项就是将选中的Action Script复制到剪贴板中,就相当于我们按下“Ctrl+C”的功用。
Save action script as text选项就相对有用一些,它可以将当前显示的Action Script另存为一个.txt文件,以后想用可以随时打开,很方便。
Enable actions in preview window选项可以说是Action Script Viewer里最有用的功能之一,如果激活了它,一旦选中的组件中含有Action Script的话,这些Action语句产生的效果就会直接在预览窗口中显示出来,对于我们学习理解Action Script可是大大有用啊。
Force Flash5 mode选项又是一个重要的功能,如果当前打开的swf文件是Flash5以下版本的,只要激活这个选项,该swf中的Action Script就会全部以Flash5的语法格式显示。
Open selected in new window选项 是用来将某一帧,某一层,或某一组件在新的swf窗口中打开,其主要目的是用来展开组件以查看其内含的东西。
Trace selected in this window选项 主要是用来了解swf文件中各项之间的相互关系的,如果我们选中了一个层的话,激活这个选项后Action Script Viewer就会找出和这个层有关的组件。如果选中了一个组件再使用这个选项的话,软件就会找出这个组件第一次出现的帧。
Movie information选项是告诉你当前打开的swf文件的各种信息的,包括宽和高及播放速度和背景颜色等。
#2 2.详解swf窗口
前面讲解了菜单选项的作用,下面就让我们来仔细瞧瞧看上去最复杂的swf窗口。swf窗口由一系列列表、查看标签、选项快捷按钮和一个文字框组成((图9))。列表是用来显示swf文件里的各种组件和内容的;通过在Frame、Library、Instance Names、Action Scripts这四个查看标签中点击切换,我们能按各种方式查看swf文件的内容;标签快捷按钮就是我们上文解说过的菜单选项的快捷按钮;文字框则是用来显示swf文件内含的Action Script的。在swf窗口的列表中,只要在任何内容旁有一个Action图标((图10)),就说明此处有Action Script存在,选中该内容后就可以在swf窗口的文字框中看见相关的Action Script消息。


在swf窗口处于Frame标签被激活的情况下时,列表上方会有排列表头((图11))。Frame下的是帧;Lable下的是帧的标识;Layer下每帧中包含的层;Symbol下就是每层对应的组件对象了;Name下的是组件对象的名字,请大家注意,这里所指的名字是Instance Name,一般来说是只有电影夹组件和变量框才会有的。如果我们要在Flash中重组swf文件的话,为了确保Action语句能运行,要将电影夹组件或变量框组件的Instance Name按照它上面显示的来取;Info下是组件对象的坐标位置;Effect下就是该组件对象的运动效果;Other Info下是一些附加的组件信息,如缩放等。

左边的列表中显示的内容是按照帧的先后次序从上到下依次排列的,如果帧的旁边有一个中间点的电影胶片图标((图12))的话,就说明该帧是一个关键帧。选中一个帧后,该帧所含有的层将在右边的列表中被显示出来。先前我们已经说过了,在Action Script Viewer中每一层只含有一个组件对象,所以我们可以将每一个组件对象的信息了解得清清楚楚。如果在层的旁边有个白纸中间有一黑点的图标((图13)),就说明该层是有变化的层(请参看前文的说明)。


接着让我们把swf窗口切换到Library标签下,在这儿,当前swf文件中的所有组件对象都会被列出来,我们会发现在Library标签下的列表也有一行列表头((图14))。重复的就不说了,新的Uses列表头下显示的是该组件对象被使用的次数(我们都知道,在Flash中组件是能被重复利用的)。如果在组件旁有一个向外化开的黑点的图标((图15)),就说明在主场景中该组件至少被使用了一次,没有的话就说明该组件是被包含在其它组件里面的。


再切换到Instance Name标签,在这个标签下,只有一个Instance Name的电影夹组件和变量框会被列出来。我们会发现标签头中又有了个新面孔--Location((图16)),它下面显示的是该组件的详细位置,位于主场景的第几帧或位于其它组件中的第几帧。细心的朋友还会发现swf窗口下显示Action Script的文字框没了,取而代之的是一条搜索栏,可以用它对Instance Name进行查询(同样见图((图16)))。

最后一个标签就是Action Scripts了,在这儿当前swf文件中所有的Action Script都将被显示出来,与前几个标签有所不同的是在swf窗口的右边会多出一个大大的Save All按钮,按下它后就能将当前swf文件里所有的Action Script另存为一个.txt文件,以方便查阅和使用。