SWF文件结构解析

合集下载

SWF文件结构大解剖

SWF文件结构大解剖

SWF文件结构大解剖Flash各种实例剖析我们都看过不少,不过你有没有想过swf文件内部到底是怎样的结构呢?不少闪客都想制作自己的Flash播放器,除了对控件的掌握和使用,更需要我们对swf文件的结构有深入的了解。

于是我用WinHex分别打开一个swf文件和由它生成的exe文件,经过仔细分析对比后,我不仅发现了swf文件转变成exe可执行文件的秘密,并且将Flash自带播放器具备而控件却无法实现的那些功能的谜底也同时解开了。

既然要“解剖”swf文件我们就要有“解剖”工具,我使用的是WinHex 9.2,你也可以用其它的二进制编辑器来查看。

一、swf文件结构和信息左侧“偏移量”一格代表一个字节,相同或相关功能的字节用同一种背景色表示。

偏移量用十进制数表示,每个字节的值均用十六进制数表示。

注:因长宽控制码所占字节数不确定,故其后的偏移量无法用具体数字来表示,改用N1、N2、N3等符号。

以上表格中所展示的是swf文件的结构,通过它你就能很清楚地明白哪部分对你编程有用,哪部分可以解决长期困绕的你的问题,怎么样?是不是开始偷着乐了?别着急,继续看更精彩的还在后面呢!二、swf文件中记录影片宽、高的方式前面表中第八个字节“影片宽高数据控制码”指的是下表中控制码一栏中的数字。

第九个字节至第N个字节“影片的宽度与高度数据存放区”指的是下表中控制码右边的那一行数字。

由于控制码的不同,宽度与高度的数据存放区的字节长度也不同。

下表中将控制码所在的字节分为两部分(高四位和低四位)。

高低位不同的组合决定了数据区占用字节数以及不同的高度算法。

相应的控制码后的蓝色条表示数据区所占用的字节。

五星代表有效数据(注意每个五星只占半个字节),其中前面几个连续的五星对应的数据记录了高度值,后面几个连续的五星对应的数据记录了宽度值。

将连续的五星所在位置的数(十六进制)组合起来,得到四位或六位的十六进制数,将此数转换成十进制数,白色五星得到的数除以10就是影片宽度数值,红色五星得到的数除以40就是影片高度数值。

swf文件的数据结构以及转为exe或从exe中剥离出swf的源代码

swf文件的数据结构以及转为exe或从exe中剥离出swf的源代码

swf文件的数据结构以及转为exe或从exe中剥离出swf的源代码SWF文件是由一个文件头,以及一系列的标签组成的。

标签类型有两种:定义型标签和控制型标签。

定义型标签把所有物体定义成一个个角色,这些角色存在字典里面。

控制型标签操作这些角色,并且控制影片的流程。

swf 的长度单位使用twips(缇),1像素=20缇,这样,分数的像素可以使用整数的缇表示。

swf 的字符串是以00结束的byte序列,采用utf-8编码。

下面介绍swf文件的数据结构。

一、文件头文件头的结构见表1。

表1:SWF文件头---------------------------------------------------------------------------字段字节数说明---------------------------------------------------------------------------标识符 3 “FWS”或“CWS”的ascii码版本号 1 版本,例如:1表示swf1,6表示swf6文件长度 4 长整形,文件的字节数,低位在前帧大小RECT结构SWF场景的大小,单位为twip(缇,1缇=1/20像素,与VB不同)帧速度 2 以8.8表示的浮点数(也有文章说这是一个整形数),默认=000C帧数 2 整形,影片总帧数,低位在前---------------------------------------------------------------------------说明:1.文件头以标识符开始,不是“FWS”就是“CWS”。

FWS表示该文件未压缩;CWS 表示文件从 RECT 字段开始(第 9 个字节开始)至文件结尾的所有内容,都是使用开放标准 ZLIB 压缩过的(CWS 是在 SWF6 以后才被使用的。

对其解压缩可以使用 zlib1.dll 中提供的uncompress)。

swf_file_format_spec_v9(中文翻译)

swf_file_format_spec_v9(中文翻译)
SWF9 文件格式规范
闪刀浪子
SWF9 文件格式规范 介绍..................................................................................................................................................... 2 SWF 文件格式规范....................................................................................................................2 SWF 文件头................................................................................................................................3 SWF 文件结构............................................................................................................................4 标签格式..................................................................................................................................... 5 定义型标签和控制型标签.......................................................................

SWF矢量动画解析框架设计

SWF矢量动画解析框架设计

SWF矢量动画解析框架设计
倪应华;金炳尧
【期刊名称】《计算机系统应用》
【年(卷),期】2010(019)003
【摘要】SWF是一种网络交互矢量图形动画格式.从介绍SWF动画文件结构入手,设计了SWF文件的解析框架.探讨了SWF解析流程中的两个重要环节:SWF文件头解析和Tag解析,在此基础上设计SWF的解析程序实现SWF动画环境信息、动画元素信息以及控制信息的获取.
【总页数】5页(P202-205,165)
【作者】倪应华;金炳尧
【作者单位】浙江师范大学教育信息技术研究所,浙江金华321004;浙江师范大学教育信息技术研究所,浙江金华321004
【正文语种】中文
【相关文献】
1.SWF动画文件解析器设计与实现 [J], 鲁云飞;何明华;黄婷婷;许海涛
2.网络矢量图形SWF与SVG的比较分析 [J], 万明民;顾景文
3.PPT中,SWF动画无法播放的解决方法 [J], 翁永平
4.基于MFC的SWF动画文件解析设计 [J], 鲁云飞;何明华
5.浅析SWF动画制作软件及技巧 [J], 张红艳
因版权原因,仅展示原文概要,查看原文内容请购买。

flash工作原理

flash工作原理

flash工作原理Flash是一种常用的多媒体技术,广泛应用于网页设计、游戏开发、动画制作等领域。

本文将介绍Flash的工作原理,从整体架构到具体实现细节,以帮助读者更好地理解Flash的运行机制。

我们来了解Flash的整体架构。

Flash由两个核心组件组成:Flash Player和Flash文件。

Flash Player是一个独立的应用程序,用于在用户的计算机上播放Flash文件。

Flash文件则是一种特殊的文件格式,其中包含了用于展示动画、音频和视频等多媒体内容的代码和资源。

当用户在浏览器中打开一个包含Flash内容的网页时,浏览器会加载Flash Player,并将Flash文件传递给Flash Player进行处理。

Flash Player会解析Flash文件中的代码,将其转换为可视化的内容,并在用户的屏幕上显示出来。

接下来,我们详细介绍Flash文件的结构和工作原理。

一个Flash 文件通常由多个元素组成,包括舞台、场景、图层、时间轴和动画对象等。

舞台是Flash文件的主要区域,用于展示内容。

场景则是舞台的一个子区域,用于划分不同的内容区块。

图层用于分层管理不同元素,使其可以在时间轴上独立操作。

时间轴是Flash文件的核心控制区域,用于定义和控制动画的播放顺序和时间。

动画对象则是Flash文件中的可视化元素,如图片、形状和文本等。

Flash文件的工作原理是基于时间轴的概念。

时间轴上的每一帧都代表了一个时间单位,Flash Player会按照时间轴上的帧顺序依次播放动画。

在每一帧中,Flash Player会根据代码和资源定义,计算并渲染当前帧的内容。

这意味着动画对象的位置、大小、颜色等属性可以在不同帧上进行变化,从而实现动画效果。

除了时间轴上的帧动画,Flash还支持基于代码的动画控制。

开发者可以使用ActionScript语言编写代码,通过控制动画对象的属性和行为,实现更加复杂的动画效果。

Flash(Swf)文件结构说明

Flash(Swf)文件结构说明

SWF文件头:所有SWF文件头都具有如下内容(格式定义见第三章基本数据格式):文件开头包含0x46,0x47,0x53(“FWS”)或者0x46,0x57,0x43(“CWS”)三个字节大小的域。

FWS标记表示无压缩的SWF格式文件;CWS表示在使用标准的ZLIB压缩完8个字节长度FileLength域后的域。

数据格式使用1950到1952通用标准文档的ZLIB库进行描述。

只有在SWF6.0以后版本才允许进行CWS文件压缩。

然后是一个字节的版本域。

版本域不是ASCII字符而是一个8位的数字。

例如:SWF4.0版本的版本字节是0x04,而不是ASCII字符‘4’(0x35)。

在文件头中文件长度域包含了SWF文件的总长度。

如果是无压缩的SWF(FWS域)文件,文件长度域储存文件的大小。

如果是压缩的SWF文件,文件长度域存储压缩后的文件大小,这样一般不用计算文件的大小。

如果无压缩有效,则能够进行更有效的压缩处理。

FrameSize(帧大小)域定义了动画的宽度和高度。

并以RECT格式存储,也就是它的大小依照需要的字节大小进行改变。

X 和Y 坐标一直保持为0;最大坐标值用来定义动画的宽度和高度。

(见使用字值)。

FrameRate (帧速)表示每秒帧的播放速度。

这个速度不是在SWF 文件中流声音数据的速度或运行在低速率CPU 上的速度。

FrameCount (帧数)指SWF 动画的总帧数。

SWF 文件结构:下面的SWF 文件头由几个连续的标签(Tag)数据块组成。

所有的标签(Tag)都是一个格式,因此分析一个SWF 文件不用去了解这些数据块。

数据块中的数据指向它内部的数据,但不能指向其他数据块内部的数据。

这样便于使用工具对SWF 文件进行增加、删除、修改标签(Tag)。

标签(Tag)格式:每个标签(Tag)都包含标签(Tag)类型和长度。

有两种标签(Tag)头格式,长类型和短类型。

短标签(Tag)用于标识小于62字节的数据。

关于SWF那个著名的漏洞-电脑资料

关于SWF那个著名的漏洞-电脑资料

关于SWF那个著名的漏洞-电脑资料作者:zodiacsoft来源:天鹅糊&&乌鸦酱[Toooooooooooooooooold]也就是CVE-2007-0071,flash9x.ocx存在问题,版本一直影响到9.0.115,。

漏洞本身很简单,Dowd的思考方向没有脱离大众,但关键在于相当牛逼的一系列利用技巧。

具体的细节Dowd写了一篇很棒的paper,估计很多人看了,也有很多人做了。

文章我仔细拜读了一次,但出于某些原因,没有去动手做出最后的成品,以后也不打算做,这个东西不是手把手说怎么触发利用的,而是一些关于那篇文章的勘误和另一些周边小问题的补充。

第一个障碍是swf文件格式,这个大概会花费你两到三个小时的时间。

推荐下载一个Sothink SWF Decomplier,当然最好还要一个Flash CS3。

参考文献当然是Adobe自己公开的SWF文件格式pdf。

同很多文件格式一样,SWF由头和一系列的块组成。

SWF又分压缩和非压缩两种,但两者都保留了基本的头块,压缩方式是zlib,可以用标准的zlib来解压,压缩的SWF先处理一下比较好(或者导出的时候选择非压缩方式),这样原始的数据看起来会方便些。

块格式有各种各样的标示和数据,大多数情况下标示用6个字节,后4个字节表示长度,有时候为了节约,当块长在63字节以内的时候也用两个字节来表示标示和长度,这个有点麻烦,需要计算一下。

还有一种变长的数字表示形式,最长用5个字节来表示一个32位整型,也是为了节约,这个也有点麻烦,手算肯定麻烦,还是要写个程序自己算。

过了文件格式解析这一关,大概也写出一个能够parse各个块的程序了,最好能拆开各块分成文件,然后能组装起来,后面手工编辑方便很多。

第二个障碍是ActionScript,这个地方要花多少时间就难说了。

参考文件当然是Adobe自己的pdf,不过也就是拿来当个手册用,只要记住0×62 0×63 0×47等字节码的功能就可以了。

SWF文件结构研究

SWF文件结构研究

SWF文件结构这里所讲的FLASH的文件结构不是指文件的存储格式结构,而是指FLASH文件特有的运行结构。

了解它对做 好FLASH会有一定的帮助。

FLASH 作为一个动画制作工具,其最终成品是以.SWF文件表现的,一个复杂的SWF文件,无论从时间还是空间范围都是由一定结构组成的,组成时间顺序的最基本单 位是帧,而组成空间范围的基本单位是物体对象。

FLASH文件结构按时间顺序和空间范围可分为顺序结构和层叠结构两类,下面我们进一步分析。

2.顺序结构及应用如前述,顺序结构的基本单位是帧,由无数个顺序帧构成了场景,由无数个场景构成了一个SWF文件。

在物理上第一个帧与下一个帧是连续的,第一个场景与下一个场景也是连续的,同一时间点上的帧如同一幅图,连续时间内的多个帧构成了由多幅图形成的画面,把 这些多画面进行顺序播放,就形成了动画。

(变形动画和移动动画只不过是把中间的过渡帧交由FLASH自动处理)如果不施加Actions,FLASH的运 行按顺序结构依次进行,同一时间点上的对象同时出现,一个场景播完后紧接着播第二个场景,直至到最后一个场景的最后一帧。

施加了Actions后,则按 Actions指令进行转向,指令作用结束又按一定的时间顺序依次运行播放。

帧是物体对象的载体,场景是物体对象的载体集合。

在实际应用中,可以利用顺序结构来安排物体对象出场的先后、出场时间的长短(帧越占得多,时间占得越长);把相对类同的主题设成一个场景则便于制作和调试(检测功能中有 检测电影 和 检测场景 之分,前者播放的是整个影片,后者播放的是当前一个场景)。

可见,顺序结构主要与播放的时间顺序和时间长短有关。

3.层叠结构及应用层叠结构表现在空间范围上,最基本的单位是画面物体,多个画面物体可以同处一帧,同一帧上的画面物体如果是符号的话(严格说应该称为例子或实例)存在着前后叠放的关系,后放上的符号总是处于前面并把先放上的符号遮住,要改变这种先后叠放的关系,可以选中符号后用Ctrl+上下箭头键进行。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

所有 的 S WF文件 都 由文 件头 开始 。文件头 的结构 如表 1 示 。 所
sF 1文件头 『 I 孚段 类型 说明
标志 标志 标志
版本 号
8 位 B 位 S 位
B 位
标志字节:“ ’ P 表示末压 缩, c 示压缩 “’ 壤 代表为 w 代表为, S
以在 处 理 S WF文 件 的 时 候通 过 工 具 移 除 、 入 、 辑 同 的字体 。 插 编 描述 标签 、 制标 签 和字 典 之 间的交 互关 系 控
如 图 3所 示 标签。 1标签 格 式 、 所有 的标 签 有标 签 头和 数 据块 组 成 。标 签 头 可 以
¥ F 件 巾标 签 W 文

每 一个 描述 标签 都 被指 定一 个 唯一 的角色 I D 字典 中的 内容被 存 储在 角 色 I D之后 。 控 制标 签 能够通 过 角色 I D在 字典 中找到 所需 内
分析 S WF文 件 的 时候 可 以跳 过 一些 不 明确 的数 据 块 。 样 也 可 以使 用 字 典 中 的数 据 进 行 更 复 杂 的 角 色定 义 。
2 1 年 第 6期 01
福 建 电

6 9
个 字段 使 用一 个 RE T结 构 来 存储 .表示 它 的 占位 长 制标 签所 应 用 。字典 的建立 和使 用 应遵 循 以下 规则 : C
度 会 根 据 bt 描 述 而 随 时 改 变 显 示 尺 寸 字 段 的 i s的 R C E T结 构 的 X n和 Y n通 常 为 0 X a mi mi : m x和 Y a mx
角色 t膨状定义
角 色 2 声 音 定义
角色 1形状
角 色 2 声 音
是 短标 签 头类 型也 可 以是 长 标 签头 类 型 。短标 签 头类 型用 于数据 在 6 2字节 之 内 的标签 。 如果 标 签 的数据 长 度 不超 过 6 2个 字 节使 用 短标 签 。 长标 签 头类 型 可 以 而 用 于 数 据在 4 之 内 的 任何 标 签 。 短类 型标 签 如表 2 G
“ WS ) 或 ] 3 0【 0【 (C ” 。 WS表示 文 ( 5 5 Pae 之 前 的 版 本 兼 容 同 时 又 能 够 随 意 扩 展 新 的 特 ( F ” , 为 0 4 ,) 7,】 3 ” WS ) F l r y 件 没 有 压 缩 .WS表 示 第 8个 字 节 后 面是 经 过 Z I C LB 性。



度 。长类 型标 签 头 图表 3所示 。
标签头 记录 ( 类型) 长 宇段 TgoenLn t aCdhdegh
Lnt egh
声 音 流标 签必 须有 序 。 无序 的声音 标签 会 导致播 放 时也 无 序 。


类型 1 6
3 2
说明 高l位表示标签类型 0 低6 位始终为O3 xF
主要 介 绍 了 S WF文件 的组 成 , S F文件 的结 构进行 了解析 , 对 W 有助 于 大 家更 好 的 了解 S WF文件 的结构 。
【 关键 词 】 lh S F 矢量 标签 :Fa W s
1 引 言 、
8脚 本实 现 :WF格 式包 含 各 种标 签 . 签 提供 堆 ) S 标
代表SF W文件的版本 比如O0代表SF x6 W6

图 1 S F设 计 目标 W
文件 长度 3位 2 整个文件所占字节数 显示尺 寸 R c E 结构 sF I 场景的大小 『 单位为lw p(/ O t i 1Z 像素)

1适 合屏 幕显 示 : ) 需要适 合 屏幕 显示 同时支 持 抗锯 齿。 能够 快速 渲染 各种 颜 色格式 的位 图 、 动画 和交 互按
所示 。
标 头 录(类 ) 签 记 短 型 字 段 型 说 明
角色
描 述 标签
角色 3字体定义 角色 4文本定义 使用了角色 3 的字体
角邑 l 曲位 置 对 象
角 色 3 字 体
角色 4文本
控 制标 签
给 显示列 袭添 加形

图 3 标 签 和 字 典 之 间关 系
钮。
帧速
1位 6
每秒的帧速 。通 过一个88 " .4数方式显示 。 ( 整数和小数各占l 8 位)
帧总数
l位 6
文件 中帧 的总数。
表 1 文 件 头 结 构
2易 于 扩 展 : 用 标 签 格 式 , 够 很 容 易 与 Fah 1 使 能 ls
文 件 头 由 三 个 字 节 。 或 为 0 4 ,x 7 O 5 x 6 O 5 。x 3
S WF ( ok w v ah s c a ef s1是 Marme i ( 已 被 栈 机解 释 需要 的字 节 码 字 节码 支 持 A t n eit h l co da 现 ci s r 语 o p
A O E公 司收购 )公 司 的动 画设计 软 件 f s D B l h的专 用 言 。FahPae a ls lyr提供 运 行 时 的 A t n eit ci S r 对象 模 型 o p 格式 , 是一 种支 持矢 量 和点 阵图形 的动 画文 件格 式 。 具 允许 FahPae 的图元 、 务交互 。 ls 1 r y 服 有非 常优 秀 的压缩 性 、 输性 和交 互性 。l h动画被 广 传 fs a S WF格 式经 历 了几 个 版 本 。直 到 S 5才 真正 明 WF 泛应 用于 网页设 计 、 网络动 画 、 网络游 戏 和 网络交 换 等 确 了 S WF标签 设 置 。WF S 6及后 面 的版本 改变很 小 . 一
2 S F文 件 介 绍 、W
S WF格 式 主要用 于在互 联 网上传 递 矢 量图 、 本 、 文
、 视 频和声 音 , 能 被 A o eFahPae 软 件 支持 。它 3 文 件 头 解 析 且 db l 1 r s v
图 2S WF文 件格 式
被设计 为一 种 高效 的传输 格式 。 设计 目标如 图 1 示 : 所
3S )WF文 件 中标签 (a) T g 的排 序
般 来 讲 ,WF中的 标签 ( a ) S T g- " 7以随 意 排序 。但 是 必 须遵循 以下规 则 : 如 果 是 S 8之 后 的 版 本 则 FlA tb t WF i tiue e r s标 签

hCdnL g l g e dnt oA e h 6 位
数 据块 里 面的 数据 可 以定 位 到 内部 的偏移 位 置 ,但是 例 如 .按 钮 和剪 辑标 签 都使 用 到 了定 义 它们 内容 的角 不 能定 位 到其 它块 中的偏 移 位 置 这 种 方式 使 我们 可 色。 文本 标 签也 包含 了字体 角 色 以便 于 为文 本 选择 不
6 8

建 电

21 年第 6 01 期
S WF文 件 结构 解 析
徐 杏 芳
(长 江大 学计算 机 学 院 湖北 荆 州 4 4 2 3 0 3)
【 摘 要】 WF 目 :S 是 前流行动画 F s lh的专用格式,WF a S 具有非常好的压缩性 、 传输性和交互性。 本文
高0 表 标 类 1 示 签 型 位
低位 标 度 6 表示 签长 表 2 短类 型 标 签 头 :

标 签 的 长度 不 包 括 标 签 头记 录 自己的长 度 .仅 表 必 须 为第一 个 标签 。 示其 后 面数据 的长 度 。如 果 标签 为 6 3字 节或 者更 长 。 标 签仅 依 赖之 前 的标 签 。 而不 依 赖后 面 的标签 。 它将 存储 为 一个 长标 签 头 的 类 型 。长标 签 头 可 以看 成 角 色 的定 义 标 签 必 须 出 现在 引用 它 的 控 制 型标 个 标 签 长 度 为 0【 ) f的短 标 签 跟 着 一 个 3 3 2位 的 长 签 之前 。
S 6之后 的版本 才开 始使用 压缩 。 3方便 网络 传输 : 1 能够在 有 限或者 不 确定 的带 宽 下 开放 标准 压缩 的 .WF 版本 号 占一个 字 节 紧跟 在 标 志之 后 。版 本数 字 不 传输 。文 件使 用 压缩 来减 少尺 寸 同时支持 流 式渲 染 。 S I 字符 而 是一个 8位 的数字 。例如 S 4 WF , 4 1简 单 :WF格 式需 要尽 量 简 单 以使 它 的播 放 器 是一个 A C I S 版本 号字节 为 o o , 】 4 而不 是 A C I 【 S I 字符 ” ” 4。 小 且容 易 实 现 。同 时还必 须 尽量少 依 赖操 作 系统 的特 文 件 长度 字段 记 录 S WF文件 的 总长 度 . 括文 件 包 性 , 便跨 平 台。 方

描述 标 签定 义 了诸 如形 状 、 体 、 图或者 声音 。 字 位

定义 宽度 和高 度 。

帧速 字 段定 义 了每 秒 的播 放速 率 。这个 速 率是 无 法绝 对 保证 。 容并 对其 执行 某 种操 作 , 如显 示形 状 或者 播放 声音 。 例 帧总 数定 义 了 S WF文 件 的总 帧数 。 每个 角色 I D必 须 指定 一 个 唯一 的 I 不 允 许重 复 D. I 例如 。 D。 第一 个 角色 I D是 1 第 二个 是 2 角色 0被 指 , 。 4 tg解 析 、 a 定 为 表示 空 角色 的专 用 I 。 D 文件头之后 是一系列 的标记 的数据块 f 为” 称 标 并 不 是 只有 控 制标 签 才 能 引用 字 典 。描述 标 签 同 签 ”。所有 的标 签 (a 使 用公 用 的格 式 , 以程 序在 ) T 都 所
领域 。 目前 。 ah动画 已经成 为 网络动 画最 重要最 流 行 些 新 的特 性 部分 或者 全 部在 A t n cit fs l ci S r 脚本 层实 现 。 o p 的一 种格式 因此 研究 S WF动 画文 件格 式对 实现 f s 从 S 9开始 , S使用 了新 的虚 拟机 。S l h a WF A WF文件 由文 动 画文件 的解析 具有 重要 的意 义 本 文介 绍 了 S WF文 件 头 和 T g 签组成 ,WF文件格 式如 图 2所 示 。 a标 S 件 的组 成 。 件 头 的解 析 和 T g解 析 。 文 a
相关文档
最新文档