logo资料库

数据文件结构分析方法.doc

第1页 / 共67页
第2页 / 共67页
第3页 / 共67页
第4页 / 共67页
第5页 / 共67页
第6页 / 共67页
第7页 / 共67页
第8页 / 共67页
资料共67页,剩余部分请下载后查看
前 言
述语与定义
对读者的建议
1 基本知识
1.1 数据文件
1.2 数据文件类型
1.3 数据类型
1.3.1 整型数据
1.3.2 浮点数据
1.3.3 字符型数据
1.3.4 结构数据
1.4 数据的存放顺序
1.5 数据文件结构
1.5.1 文件头
1.5.2 索引表
1.5.3 数据部
1.6 数据文件基本分析方法
1.6.1 基于数据流的分析方法
1.6.2 基于基本数据类型的分析方法
1.6.3 基于结构数据的分析方法
2 Fexplorer简介
2.1 Fexplorer功能
2.1.1字节流解释功能
2.1.2自定义数据结构功能
2.1.3结构数据分析功能
2.1.4空间数据分析功能
2.1.5数据读写程序自动生成功能
2.1.6智能解释功能(尚未实现)
2.2 软件组成与结构
2.2.1 文件输入/输出模块
2.2.2 数据翻译模块
2.2.3 主界面管理模块
2.2.4 结构数据分析模块
2.2.5 数据查找/自动翻译模块
2.2.6 空间数据分析模块
2.3 地址与指针
3 Fexplorer操作简介
3.1 主操作界面简介
3.1.1 数据流翻译面板
3.1.2 数据类型显示/设置面板
3.1.3 Hex数据窗口
3.1.4 记录/结构窗口
3.1.5 书签窗口
3.2 主菜单操作
3.2.1 文件菜单操作
3.2.2 编辑菜单操作
3.2.3 查询菜单操作
3.2.4显示菜单操作
3.2.5格式菜单操作
3.2.6分析菜单操作
3.2.7窗口菜单操作
3.2.7工具菜单操作
3.2.7帮助菜单操作
3.3 数据类型分析
3.3.1 基本数据类型分析
3.3.2 常用数据类型分析
3.3.3 用户定义数据类型分析
3.4 记录/结构窗口操作
3.5 书签窗口操作
3.6 窗口联动操作
3.7 定义基本数据类型
4 Fexplorer高级操作
4.1 结构数据操作
4.1.1 定义结构数据类型
4.1.2 利用结构数据进行批量翻译
4.1.3 结构数据自动翻译
4.1.4 结构数据替换
4.1.5 利用结构格式刷翻译
4.2 结构数据分析
4.3 空间数据分析
4.4 数据文件读写程序自动生成
4.5 修改数据
5 应用实例
5.1 含有文件头的颜色数据文件分析
5.2 不含文件头的颜色数据文件分析
5.3 空间数据文件分析之一——数据文件
5.4 空间数据文件分析之二——图符库
附录
1 数据类型
实数类型
类型
精度
类型
精度
实数类型
Real48类型
Single类型
Double类型
Extended类型
Comp类型
Currency类型
2 颜色
RGB和CMYK色彩模式
CMYK
CMYK是什么
减色 (CMYK)
数据文件结构分析方法 2009 年 06 月
前 言 出于各种各样的目的,软件开发人员经常会面对结构未知的数据文件,这可能是原于受客户委托, 对第三方开发的软件功能进行有限扩展或二次开发;也可能原于学习和提高的目的;但更多的时候 可能纯粹出于好奇。 分析数据文件需要一些相关的知识和技能,包括对数据文件的基本结构和存储方式的理解。 数据文件结构分析方法的任务:数据结构与数据表达内涵的分析。 本书不涉及通常意义上的数据加密、数据解密等相关问题。 基本数据类型。在第一部分中,将给以简单的介绍。 对于分析复杂的数据文件,除了基本的知识和技能外,还需要强大的分析工具。在第二、三、 四部分,介绍了 Fexplorer 软件强大的数据分析功能和方便、灵活的操作。 在面对实际问题时,分析数据文件可能需要更多的知识和背景。在第五部分通过实例演示了一 个完整的数据文件的破解过程。 需要特别说明的是,尽管数据文件分析技术有可能被一些人用于非法目的,但本书的著者强烈 要求读者,在理解和使用本书的过程中,严格遵守国际、国内软件保护、知识产权等相关的法律、 法规,这也是著者编写本书的出发点。
述语与定义 数据 记录—— 记录由连续的字节组成,被解释为基本的数据类型,记录包括地址、数据类型、数据长度、含 义。 结构—— 结构由一组相邻的记录组成,代表一个对象或数据模型。 格式刷—— 格式刷是被选定的结构。
对读者的建议 尽管本书中的数据文件分析不涉及常规意义上的数据加密与解密,但与软件开发中的其它工作 相比较,分析数据结构还是要耗费相对较大的劳动强度和时间。在软件开发领域,尽管不缺乏野心 勃勃的天才,但是如果浪费他人宝贵的时间和精力是万万不可的,为避免本书有可能在策略上误导 读者而使人陷于歧途,在此特别提醒读者,在进行数据文件分析时,首先应该制定一个科学的分析 方案,并在方案的指导下开展分析工作。为此,提出如下建议: 第一,应尽可能收集与数据文件相关的资料,包括开发文档、源程序代码;收集与软件涉及的 行业相关的标准。 第二,与软件的开发者取得联系,争取得到第一手资料或可能的帮助,有可能的话,请高人指 导。 第三,通过查询,收集是否已经有人进行过相似的分析工作及分析结果。 如果从外部无法获得帮助,必须依靠自己完成分析工作的话,在着手分析之前,也应当做好充 分的准备: 第四,对软件的功能和性能更多的了解,理解软件的设计思路。 第五,尽可能收集到两个以上的同类数据文件。
1 基本知识 1.1 数据文件 数据文件是整个软件的一部分,存储软件的输入、输出数据,通常以磁盘文件的形式保存在存 储介质中。 有时软件并不需要数据文件,比如大家常用的 WINDOWS 提供的计算器。但多数,特别是大型应 用软件,都需要有数据文件。如数据库管理软件、文字处理软件、绘图软件、股票分析软件等,都 有自己的数据文件。 软件的文件包括程序文件和数据文件两类,程序文件主要包含软件的可执行代码,负责对用户 输入的数据进行计算、分析,并将计算分析结果以数据文件的形式保存到数据文件中。 1.2 数据文件类型 从功能上,数据文件可分为输入数据文件、输出数据文件和临时数据文件。输入数据文件负责 初始化软件的运行环境,存储被加工的数据原料。输出数据文件存储经过软件分析、计算的结果。 临时数据文件存储软件计算过程中生成的临时数据或中间结果,这类数据在软件运行结束后一般由 软件自动删除。 从存储格式上,数据文件可分为文本数据文件和二进制数据文件。文本数据文件可由文本编辑 器打开。常见的文本数据文件有批处理文件(*.bat)、配置文件(*.ini 或*.CFG)、DXF 文件。 二进制数据文件不能被文本编辑器打开,只能通过 WINDOWS 提供的底层文件操作指令访问。 由于二进制数据文件的存储效率和访问效率较高,几乎所有规模较大的数据文件全为二进制数据文 件。 由于文本数据文可直接用文本编辑器查看,所以数据文件分析中所设计的数据文件类型主要是 二进制数据文件。 1.3 数据类型 数据文件可以看成是一个由各种基本的数据类型构成的数据集合,基本的数据类型有整型数据、 浮点型数据、字符型数据。 1.3.1 整型数据 整型数据有单字节整数(8 位)、双字节整数(16 位)、四字长整数(32 位)。单字节整数只占 1 个 byte,表示数据的范围从 0-255 或-125 到 125。双字节整数占 2 个 byte,表示数据的范围从 0-65535 或-32767 到 32767。四字长整数占 4 个 byte,表示数据的范围从 0-4294967295 或-2147483647 到 2147483647。 1
逻辑型数据也由单字节整数表示,占 1 个 byte(8 位),其中 0 表示“否”,0 表示“是”。随着 计算机计算能力的提高,计算器处理数据的范围不断扩大,整型数据范围也在增加。目前 64 位整数、 128 位整数在部分机器或系统中已经成为基本数据类型。 1.3.2 浮点数据 浮点数有单精度浮点数、双精度浮点数两中基本类型。单精度浮点数占 4 个 byte(32 位),表示 数据的范围从 0-255 或-125 到 125。双精度浮点数占 8 个 byte(64 位),表示数据的范围从 0-255 或 -125 到 125。 1.3.3 字符型数据 字符型数据分两类,字符和字符串。字符型数据占 1 个 byte(8 位),表示“0”-“9”、“A”- “Z”、“a”-“z”、“!”-“+”、“{”、“}”、“[”、“]”、“|”、“、”、“:”、“;”、“’”、“<”、“>”、“,”、“。”、 “?”、“/”等。 字符串数据由字符组成。根据存储方式的差异,字符串分为静态字符串和动态字符串。静态字 符串存储时包含一个表示字符串长度的字节,称为长度字节,位于存储的第一个字节。因此,静态 字符串最大容纳 255 个字符。 动态字符串没有长度的字节,字符串是以“0#”结尾。所以动态字符串又称为“零结尾字符串” (Null-terminated String)。动态字符串没有长度限制,但一般机器或系统中,动态字符串长度小于 4GB。 1.3.4 结构数据 结构数据(STRUCTURE),有时又称记录(RECORD),是由若干基本数据类型构成。以下是 两个简单的结构数据,分别表示二维空间点和三维空间点。 T2DPoint=Record X,Y:Real; end; T3DPoint=Record X,Y,Z:Real; end; 结构可以变得很复杂,实际上每一个数据文件可以看作一个结构。下面是一个表示文件头信息 的结构数据,不仅包含大量的基本数据类型、也包括预定义的结构数据类型,既嵌套结构数据。简 单的嵌套结构数据只有两层,复杂的嵌套结构数据只有三层甚至更多。 HeaderType=Record OBjNum:Word; XYOffset:LongInt; 2
XYSize:Longint; IndexOffset:LongInt; IndexSize:LongInt; AttrOffset:LongInt; AttrSize:LongInt; Addr:Longint; XYAddrIndex:Array of AddrIndexType; AttrAddrIndex:Array of AddrIndexType; ISubGrInfo:ISubGrInfoType; IStrInfo:IStrInfoType; ILineInfo:ILnInfoType; Num1,Num2:SmallInt; XYRange:RangeType; ScreenType:Record ScrWid,ScrHei:single;end; AttrIndexOffset,AttrIndexSize:Longint; RangeOffset,rangeSize:LongInt; end; 结构是数据文件最常见的数据类型,是构成数据文件的基本框架。分析数据文件所花费的时间 多数用在从大量的数据流中分离出一个个结构数据。 1.4 数据的存放顺序 长度超过 1 个字节的数据,在存储数据时,有存放顺序的问题。对于两字节整数,低位字节在 前,高位字节在后,如整数 5689,十六进制的存储格式为“$3916”。四字节整数,最低位字节在前, 高位字节在后,如整数 20060520,十六进制的存储格式为“$68193201”。 静态字符串数据占 n+1 个字节,n 为字符串的个数(不含结尾的 0#)。第一个字节为长度字节, 数值为 n 以后按顺序为各字符。 动态字符串占 n+1 个字节,n 为字符串的长度,第一个字符占第一位,以后按顺序占据位置, 最后一位为结束标志 0#。 1.5 数据文件结构 数据文件一般包含文件头和数据两部分,部分数据文件可能还包含索引表。因此分析数据文件 的第一步是弄清数据文件的基本框架,然后按照文件头、索引表、数据三部分依次分析、破解。 3
1.5.1 文件头 文件头一般在数据文件的开始。通常包含文件类型标识、所有者、版本信息、创建时间、文件 大小。 文件头中最重要的信息是文件的大小,它可以帮助程序员方便地访问整个数据文件。通常文件 的大小由四字节的一个长整数表示。 在分析数据文件时,由于文件的大小是可知的(通过 WINDOWS 的 GetFileSize 进程取得),因 此可以从分析文件的大小入手。 [例]:文件长度 1.5.2 索引表 索引表存放组成数据文件各部分的偏移地址、大小等相关信息,利用索引表可以方便地对数据 文件的各部分进行。通常文件各部分的偏移地址和大小由四字节长整数表示。 有些情况下,索引表与文件头是一起的。 1.5.3 数据部 数据部是数据文件的主题,通常在文件中占据大部分存储空间。一般情况下,数据部由相对独 立的数据块组成,每一个数据块表示不同的数据内容。分析数据部的第一步是将数据部分为若干数 据块。 数据块的内容和格式由数据块表达的内容决定,简单的数据块直接由最基本的数据类型构成, 这种情况比较少见。通常情况下,数据块比较复杂,不仅有简单的基本数据类型,更多的是由结构 数据类型或嵌套结构数据类型构成。 例如表示空间离散点位置的数据通常是一组实数对,其中表示二维空间的实数对由两个实数 X、 Y 构成、表示三维平面空间的实数对由三个实数 X、Y、Z 构成。这种数据块可以用 Array of T2Dpoint 或 Array of T3Dpoint 表示。 表示一组色彩的数据块,根据颜色生成方式,可以有三种数据形式:RGB 三色、CMKY 四色、 长整数,其中 RGB 三色、CMKY 四色分别由 3 字节和 4 字节组成,分别依次存放 R、G、B 和 C、 M、K、Y 色谱数据,每个色谱数据占 1 个字节。长整数直接代表一个颜色,WINDOWS 系统采用 此类颜色表示方法。这种数据筷仍然属于简单数据块,它可以用类似 Array of RGB 或 Array of CMKY 或 Array of LongInt 表示。 下组结构数据是用来描述矢量图中线图元数据块的,属于三层嵌套结构数据。 LnInfoType=record ID:String[40]; //ID 编号 LinesNum, LType, AddedType, Color:Integer; //线段数/线型/辅助线型/颜色 4
分享到:
收藏