首页
社区
课程
招聘
哪里能找到swf文件格式的详细分解?
发表于: 2004-7-31 13:45 10122

哪里能找到swf文件格式的详细分解?

2004-7-31 13:45
10122
哪位朋友有swf文件格式的详细说明?我在网上已找了好久,找不到(都是找到一些反编译软件)网上说swf格式早已公开,可找遍每个地方都没有?有知道的朋友能贴出?谢谢!!!

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 2
支持
分享
最新回复 (22)
雪    币: 519
活跃值: (1223)
能力值: ( LV12,RANK:650 )
在线值:
发帖
回帖
粉丝
2
在这里面找找,绝对COOL毙
www.wotsit.org
2004-7-31 17:52
0
雪    币: 427
活跃值: (412)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
看了一下
http://download.macromedia.com/pub/flash/Flash_File_Format_(SWF)_SDK.zip
http://www.openswf.org/spec.html

都是非常老的了,建议自己去GOOGLE搜索,我上次看了一个站对SWF MX完全揭破,非常的好。否则也就不会出现SWF-FLA这样的软件了。
2004-7-31 18:02
0
雪    币: 207
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
4
拜托3楼的给个地址啊,不用吊人家胃口啊!:D
2004-7-31 20:44
0
雪    币: 427
活跃值: (412)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
最初由 wzdbzd 发布
拜托3楼的给个地址啊,不用吊人家胃口啊!:D


不是我吊,我的地址太多,没有分类,不好找。所以你还不如去GOOGLE找一下更快。别什么事情都要挖人家老底嘛。
2004-7-31 20:53
0
雪    币: 2871
活跃值: (2340)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
哪里能找到中文的文章?
2004-8-1 08:06
0
雪    币: 2871
活跃值: (2340)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
最初由 鸡蛋壳 发布

都是非常老的了,建议自己去GOOGLE搜索,我上次看了一个站对SWF MX完全揭破,非常的好。否则也就不会出现SWF-FLA这样的软件了。


有空时给我们找出来?我用GOOGLE搜索了好久,就是找不到?
2004-8-1 08:48
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
别做梦了,鸡蛋壳这号人就是自己知道的,要牢牢捂着,或者说下,炫耀下自己而已,不信你查看他的帖子
2004-8-1 09:02
0
雪    币: 2871
活跃值: (2340)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
论坛里还有很多热心的人!知道的朋友能发出????
2004-8-1 09:30
0
雪    币: 2871
活跃值: (2340)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
有没有愿意帮忙??
若有哪本书有详细说明也可以,我去买。请推荐。谢谢!!
2004-8-2 10:55
0
雪    币: 329
活跃值: (343)
能力值: ( LV10,RANK:170 )
在线值:
发帖
回帖
粉丝
11
2004-8-3 01:21
0
雪    币: 255
活跃值: (266)
能力值: ( LV12,RANK:220 )
在线值:
发帖
回帖
粉丝
12
:D 想破解flash吧
呵呵到网上找找flasm
还有就是如果英语够好,就看官方的swf文件说明
绝对详细:D
2004-8-3 07:35
0
雪    币: 261
活跃值: (230)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
13
非常感谢RoBa 和 版主 :p

可我连不上www.wotsit.org 要代理吗??
2004-8-3 09:21
0
雪    币: 519
活跃值: (1223)
能力值: ( LV12,RANK:650 )
在线值:
发帖
回帖
粉丝
14
www.wotsit.org 我什么也不用就能连上的
2004-8-3 09:59
0
雪    币: 2871
活跃值: (2340)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
感谢几位提供帮助!

最初由 WiNrOOt 发布
:D 想破解flash吧
呵呵到网上找找flasm
还有就是如果英语够好,就看官方的swf文件说明
绝对详细:D


“官方的swf文件说明”能直接给个地址?http://www.macromedia.com/software/flash/
找不到,主要是英文太菜!
2004-8-3 12:42
0
雪    币: 2871
活跃值: (2340)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
转贴

swf文件结构解析
第1节

swf文件的整体结构是 header + body的组成。

文件的开始是一个[文件头]
它的结构如下:

字节      名称            说明
1          Signature     “F”表示非加密格式,“C”表示加密格式
1          Signature     “W”无特殊意义
1          Signature     “S”无特殊意义
1          Version        版本号,它表示对应播放器版本
4          FileLength    整个文件长度,低位在前
N          FrameSize    RECT结构体,表示屏幕大小,具体结构和长度根据数据变化,分析方法另外讨论。
2          FrameRate    帧频,默认为12,高位在前
2          FrameCount  帧数,表明文件根下的帧数,低位在前

以上是swf中,最简单的一个tag,一个完整的swf文件是由很多独立的tag组成的。每一个tag都包括一个头和一个数据体,头有2种类型,短tag型和长tag型。

短tag型由2byte构成,前10个bit表示tag类型,后6个bit表示tag长度。

长tag型由6byte构成,前10个bit表示tag类型,后6个bit固定为全1,后4个byte代表tag长度。

tag的长度不同于文件头的长度FileLength,它是除去tag头后的长度。

(另外)只有非加密的swf文件可以直接用以上的方法解析,加密的文件需要另外增加一步处理。具体方法由于牵涉到版权问题,这里我不加说明。

这份资料可能对flash设计意义不大,但如果有人用的着,我会继续分析一下,如果有人也在做这方面的调查,欢迎和我一起讨论。

第2节

前节说明了swf文件是由1个head和1个body构成的。
并且解析了header的结构,和一个tag的header部分的简单说明。

下面余下的就是swf文件的body了。

整个文件body是由大量的tag组成的,通过分析tag的head部分,可以立刻知道这个tag的类型代码和长度。

如果你无法识别这个tag的类型,也可以利用tag的长度,直接跳过这个tag。

这种方式保证了版本的兼容性,即使出现了新的tag,老版本的播放器还是能够解析完整个swf文件而不出现错误,大不了就是不能提供新的功能而已。

以下就是swf文件结构的一个形象概念。

(文件header)(文件body)
              |
(tag 1)(tag 2)(tag 3)(……)
   |
(tag header)(tag body)
   |
(tag 类型代码)(tag 长度)

这样大家是否对swf文件的结构有了一个基本的认识?

下一节我会分析一下几个swf必有的tag,包括 backgroundColor tag,showFrame tag和end tag

第3节
setBackgroundColor tag

这个tag是直接跟在文件head后面的第一个tag,是文件中必然存在的。
它的结构如下:

长度(bit)           名称                        说明
16                 header                    tag头,短tag型 类型码为9
24                 BackgroundColor       RGB类型,右3个字节,分别表示红、绿、蓝

showFrame tag

这是文件最后第2个tag,它是必然存在的。
结构如下:

长度(bit)           名称                        说明
16                  header                    tag头,短tag型 类型码为1

end tag

结束tag,它的作用不用我说了,必然是文件的最后一个tag。

长度(bit)           名称                        说明
16                  header                    tag头,短tag型 类型码为0

下一节我将讲的是character ID 和Depth的意义和textField的基本tag组成。
(另外)感谢AOL的补充和解释。

第4节
一个textField就是一个文本框,文本框有3种,静态的,动态的,和输入型。作为tag的话,它只有2种,静态的和动态的,输入型不过是动态的一种特别形式。

这里讨论动态文本框的组成。
它由3个tag组成,2个定义tag和一个控制tag
分别是:
定义tag DefineFont2 DefineEditText (针对player 7.0 如有不同情况请检查播放器版本)
控制tag PlaceObject2

DefineFont2 定义了一个字体信息, DefineEditText引用了定义的字体,并定义了显示的文字信息,而PlaceObject引用了定义的文字信息,并控制了文字的显示。

他们之间的引用就是依靠character ID进行的。

character ID就是一个从1开始的数字标示,如果中间出现缺漏,从缺漏开始的所有character ID都被忽略,而重复的话,后出现的将覆盖先出现的tag。

DefineFont2用一个character ID 来标示自己,DefineEditText和PlaceObject2也同样如此。但并不是所有的tag都有character ID。
另外,PlaceObject2虽然也有character ID,但它并不是用来标示自己的,而是用来调用的。

而深度Depth在3个tag中只有PlaceObject2拥有。

这3个tag的关系就是这样。这3个tag的结构我会在下节中说明。(抱歉,每次都说一点点!)

第5节

DefineFont2
这个tag的作用是定义一个字体,或者一组静态轮廓字,用以给DefineEditText使用。

关于文字的几乎所有信息,都可以在这个tag中进行设置,因此,这也是一个相当复杂的tag。
它的结构如下:

长度(bit)                       名称                        说明
headerLength               header                 tag头,类型码为48
16                       FontID                   character ID,唯一的标示
1                         FontFlagsHasLayout  根据字面解释,判断是否有变型的标记
1                         FontFlagsShiftJIS      是否使用ShiftJIS编码
1                         FontFlagsSmallText   是否使用小字体显示
1                         FontFlagsANSI          是否使用ANSI编码
1                         FontFlagsWideOffsets 是否使用32位偏移量
1                         FontFlagsWideCodes  是否使用16位文字编码
1                         FontFlagsItalic           文字是否是斜体
1                         FontFlagsBold            文字是否是粗体
8                         LanguageCode          语言编码,有相应的编码表对应
8                         FontNameLen           文件名长度
FontNameLen*8           FontName              文件名称(使用utf8编码)
16                              NumGlyphs             轮廓字个数
32/16                         OffsetTable             根据FontFlagsWideOffsets,为32位,否则为16位
32/16                         CodeTableOffset     同上
不定*NumGlyphs          GlyphShapeTable     轮廓字信息,为shape结构(又是一个复杂结构)
16/8                   CodeTable              根据FontFlagsWideCodes,为16位。编码表,为固定值UCS-2
16/0                   FontAscent            根据FontFlagsHasLayout,为16位,否则没有该字段
16/0                  FontDescent           根据FontFlagsHasLayout,为16位,否则没有该字段
16/0                  FontLeading           根据FontFlagsHasLayout,为16位,否则没有该字段
16/0*NumGlyphs        FontAdvanceTable  根据FontFlagsHasLayout,为16位,否则没有该字段
RECT*NumGlyphs       FontBoundsTable    根据FontFlagsHasLayout,为16位,否则没有该字段
16/0                         KerningCount        根据FontFlagsHasLayout,为16位,否则没有该字段
KERNINGRECORD*KerningCount
                        FontKerningTable    根据FontFlagsHasLayout,为16位,否则没有该字段

如果你仔细看了上面的内容,我挺佩服你的。

其实如果单纯分析动态文本的这个tag的信息,只需要分析到上面的fontName部分就足够了,其他信息只对轮廓字,也就是静态文字有效。

看到这个大家应该都明白了一点,动态文字在信息上,关键的只有一个字体名,而静态文字却包含了他的轮廓信息(包含在shape里)。
这就是动态文字和静态文字最大的不同。
2004-8-3 13:28
0
雪    币: 255
活跃值: (266)
能力值: ( LV12,RANK:220 )
在线值:
发帖
回帖
粉丝
17
最初由 学习 发布
感谢几位提供帮助!
“官方的swf文件说明”能直接给个地址?http://www.macromedia.com/software/flash/
找不到,主要是英文太菜!

官方网站还要注册
google搜索swf文件格式
2004-8-3 14:28
0
雪    币: 2871
活跃值: (2340)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
最初由 WiNrOOt 发布

官方网站还要注册
google搜索swf文件格式


搜到没用的“垃圾”还是只有
http://www.openswf.org/spec.html
2004-8-3 17:02
0
雪    币: 255
活跃值: (266)
能力值: ( LV12,RANK:220 )
在线值:
发帖
回帖
粉丝
19
最初由 学习 发布


搜到没用的“垃圾”还是只有
http://www.openswf.org/spec.html


http://www.half-serious.com/swf/format/
2004-8-3 17:30
0
雪    币: 2871
活跃值: (2340)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
谢谢提供!!
2004-8-3 19:27
0
雪    币: 2871
活跃值: (2340)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
要是有中文就更好了,外国很早就公开的资料,可国内就很少有这样资料的中文!哎!(技术封锁?)
2004-8-3 19:38
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
才知道啊,中国象鸟蛋壳的人可多拉,除非在挣钱的时候,否则是不会让你知道他掌握什么东西的。
2004-8-3 20:30
0
雪    币: 226
活跃值: (555)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
2004-8-4 08:38
0
游客
登录 | 注册 方可回帖
返回
//