SWF(shock wave flash)是ADOBE公司的动画设计软件Flash的专用格式。
这种格式具有许多优点,诸如可扩展性高,网络传输需求低,对外部依赖(如字体)依赖小,硬件需求小等。
SWF文件头包含该文件的压缩情况、版本号、文件内容长度及相关播放信息,如下表:
Signature:
文件前3个Byte为固定的”CWS”或者”FWS”,其中”FWS”为未经过压缩的SWF文件,”CWS”为使用标准Zlib压缩过的SWF文件。
自Flash11开始,新增加了SWF对LZMA压缩的支持,出现了以”ZWS”开头的SWF文件。
Version
signature之后的1Byte为SWF的version,如上图所示,version为0x0e。
FileLength:
filelength为文件解压后真实长度,类型为UI32(unsigned int),上图中79 04 00 00应为0x479,即1145byte
对CWS的解压,可以调用zilb.h中的uncompress完成
<span style="font-size:14px;">uncompress( bufd, &destlen, buf, complen-8 );
</span>

bufd: 解压后数据存储地址,需要预先申请存储空间。上图中需要申请0x479-0x8 byte的内存空间(79 04 00 00)
destlen: 为实际解压后大小,如果文件未被破坏或出现错误,执行完uncompress函数后destlen的大小应该同bufd大小相同(0x479-0x8)
buf: CWS文件除去(Singnature+Version+filelength)部分数据。
complen-8: complen为CWS文件实际大小,8为(Singnature+Version+filelength)大小,如上所述。
解压后添加上文件头,就可以完成CWS解压至FWS,如下图:
FrameSize:
The FrameSize field defines the width and height of the on-screen display.
FrameSize为结构体类型,保存frame大小的矩形信息
对FrameSize的解析共分为两个步骤
1. 获取5bit(Nbits)
0x78转换为二进制位0111 1000
取前5个bit位01111,即15个bit,意味着Xmin、Xmax、Ymin、Ymax各占15个bit
2. 根据Nbits读取矩形信息
15*4 = 60,即还需要60bit,除去0x78后3bit,还需要57bit,57bit需要8byte提供,如下图:
上述数据对应的二进制如下,橙色为Nbits,红色为Xmin,绿色为Xman,蓝色为Ymin,紫色为Ymax,灰色部分舍弃。
0111 1000 0000 0000 00000111 1101 0000 0000 0000 0000 0000 0001 0111 0111 0000 0000 0000
因此Xmin = 0;Xmax = 16000;Ymin = 0;Ymax = 16000
FrameRate:
The FrameRate is the desired playback rate in frames per second.
如上图所示,FrameRate = 0x1e00。
FrameCount:
The FrameCount is the total number of frames in this SWF file.

如上图所示,FrameCount = 0x01。
至此,SWF文件的文件头就解析完毕了。

swf文件解析(一) 文件header部分解析相关推荐

  1. 增量压缩工具Xdelta3源码解析——增量文件(Header部分)

    前言 通过上一章我们详细介绍了Xdelta3定义的三种增量指令和默认指令代码表后,本章来解析一下编码时生成的增量文件. 由于内容比较多,所以这部分会分为两章来进行解析,这一章先对增量文件的头部内容进行 ...

  2. 编程模板-R语言脚本写作:最简单的统计与绘图,包安装、命令行参数解析、文件读取、表格和矢量图输出

    写在前面 个人认为:是否能熟悉使用Shell(项目流程搭建)+R(数据统计与可视化)+Perl/Python等(胶水语言,数据格式转换,软件间衔接)三门语言是一位合格生物信息工程师的标准. 之前分享过 ...

  3. 读文件 —— WEB前端读取本地文件内容哪些事(前台解析txt文件)……

    强制让浏览器允许JS读写本地文件--的操作! 问题描述: 让自己的浏览器允许js读写本地文件,尽可能多的兼容各种浏览器.(即本机的js文件读写本机的文件) 问题回复--1: 您的意思是不需要浏览器与用 ...

  4. 【Android 逆向】使用 Python 解析 ELF 文件 ( Capstone 反汇编 ELF 文件中的机器码数据 | 完整代码示例 ) ★★★

    文章目录 一.完整代码示例 二.执行结果 三.博客资源 一.完整代码示例 使用 Python 解析 ELF 文件完整代码示例 : # coding=utf-8 # 解析 elf 文件需要导入的依赖库 ...

  5. 【Android 逆向】使用 Python 代码解析 ELF 文件 ( PyCharm 中进行断点调试 | ELFFile 实例对象分析 )

    文章目录 一.PyCharm 中进行断点调试 二.ELFFile 实例对象分析 一.PyCharm 中进行断点调试 在上一篇博客 [Android 逆向]使用 Python 代码解析 ELF 文件 ( ...

  6. [系统安全] 四十一.APT系列(6)Python解析PE文件并获取时间戳判断来源区域

    您可能之前看到过我写的类似文章,为什么还要重复撰写呢?只是想更好地帮助初学者了解病毒逆向分析和系统安全,更加成体系且不破坏之前的系列.因此,我重新开设了这个专栏,准备系统整理和深入学习系统安全.逆向分 ...

  7. php怎么解析xml,使用PHP快速解析复杂的XML文件

    使用PHP操作XML时,一般使用SimpleXML,但是在解析一些比较复杂的XML文件里, SimpleXML用起来就很麻烦了,比如下面这样的XML: demo.xml 我强烈推荐使用phpQuery ...

  8. python 解析pb文件_利用Python解析json文件

    写在前面 在金融风控领域,我们经常会使用到json格式的数据,例如运营商数据.第三方数据等.而这些数据往往不能直接作为结构化数据进行分析和建模.本文将介绍一种简单的.可复用性高的基于pandas的方法 ...

  9. 使用dom4j来解析xml文件或xml字符串

    现有一个配置文件,需要解析出根节点与子节点,还有子节点下属性的信息.虽然w3c.dom规范亦可以解析,但这儿我们尝试使用dom4j的方式来解析. 涉及到的jar包有dom4j-1.6.1.jar xm ...

  10. JAVA通过Hutool解析CSV文件【导入即用,无需封装】

    JAVA通过Hutool解析CSV文件 ​ Java解析CSV方式有很多种方式[javaCSV(未更新),openCSV(apache)],这篇文章主要是用到Hutool工具类,能快速的解析读取,不需 ...

最新文章

  1. CTO 写的低级 Bug 再致网站被黑,CEO 的号都被盗了!
  2. memcached 缓存服务器
  3. 计算机调查取证分析篇
  4. linux grub2 等待时间修改
  5. WeakHashMap和四种引用总结:
  6. 学习笔记Flink(三)—— Flink安装启动与监控
  7. C#有关Session 操作的几个误区【转】
  8. TODO monkey笔记,PC端执行和手机端执行
  9. linux 发送http请求方式
  10. visual studio内存溢出检测工具_详解JVM内存管理与垃圾回收机制2 何为垃圾
  11. 面向服务的架构SOA
  12. 给Jquery easyui 的datagrid 每行添加操作链接
  13. UOS声势浩大,麒麟没有反应
  14. 2023年东北大学理学院数学考研必看成功上岸前辈复习经验分享
  15. 网页一直提示flash版本过低升级后还是不行
  16. JetBrains PyCharm免费版
  17. 1. ELK docker部署
  18. 还儿童一个健康上网环境,正式开启我的路由器URL网址白名单之旅
  19. BIOS中断大全(表格)
  20. 关于报错Unknown custom element:did you register the component correctly? For recursive components的解决方式

热门文章

  1. js设置cookie有效期,并获取存储的cookie值
  2. android 蓝牙串口数据格式,Android 蓝牙串口调试程序开发
  3. Apache内容生成器 (1)
  4. 如何在Python中将数字文件存储在数据库中
  5. 一个行向量与一个列向量的乘积的值等于该列向量与行向量乘积矩阵的迹的值
  6. 用matlab验证傅里叶变换的基本性质
  7. flash builder 环境配置
  8. 计算器求解一元一次方程
  9. Toastr消息提示框的使用
  10. 页面重构“鑫三无准则” 之“无宽度”准则