17.3.1 010 Editor简介 010 Editor是一款非常强大的文本/十六进制编辑器,除了文本/十六进制编辑外,还包括文件解析、计算器、文件比较等功能,但它真正的强大之处还在于文件的解析功能。我们可以使用010Editor官方网站提供的解析脚本(Binary Template)对avi、bmp、png、exe等简单格式的文件进行解析,当然也可以根据需求来自己编写文件解析脚本。 下面以PNG文件解析为例,介绍010 Editor的文件解析功能。首先从官方网站上下载和安装010 Editor(http://sweetscape.com/010editor),然后到文件解析脚本下载页面中下载PNGTemplate.bt。用010 Editor打开PNG文件,然后通过Templates -> Open Template菜单打开PNGTemplate.bt,按F5键运行该脚本,就可以在Template Results窗口中看到该PNG文件的解析结果。如图17.3.1所示。 17.3.2 010脚本编写入门 学过C/C++的您会发现010 Editor的文件解析脚本(即010脚本)看起来跟C/C++的结构体定义比较相似。然而文件解析脚本不是结构体,而是一个自上而下执行的程序,所以它可以使用if、for、while等语句。 在010脚本中,声明的每个变量都对应着文件的相应字节。比如以下声明:
这意味着,文件的首4个字节将会映射到字符数组header中,下4个字节则会映射到整型变量numRecords中,并最终显示在解析结果中。
然而,在编写010脚本时可能会遇到这种情况:需要定义一些变量,但是这些变量并不对应着文件中的任何字节,而仅仅是程序运行中所需要的,这时可以使用local关键字来定义变量。比如以下声明:
这样,i和total就不会映射到文件中去,也不会在解析结果中显示出来。
另外,在数据的定义中,可以加上一些附加属性,如格式、颜色、注释等。附加属性用尖括号<>括起来。常用的属性包括以下几种:
|