winhex模板的使用方法

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

winhex模板的使用方法
winhex有很多的官方winhex模板,可以在网上下载(后缀tpl)并放至它的安装目录,即可使用。

不过要是自己能自己制作,这才好玩,不是么?!
打开winhex模板管理器,可以选中其中一个winhex模板,下面有应用,有编辑,你点开编辑按钮,就可以看到对应的winhex模板源码。

而你点开那个新建按钮,就可以自己写winhex模板了,最后保存到安装目录即可。

海天数据恢复小提示(按住CTRL+FA12 是模板管理器的快捷键可以快速打开模板管理器)提醒一点,我是在记事本下写好粘贴到新建后那个面板上的,因为我发现有好些符号它不支持,比如下划线、引号等,maybe是我自己没设置的原因,不过,这不是重点,略过。

写好后,那个面板下有检查语法的按钮,通过它可判断你的代码是否语法正确。

闲话不多说,下面,我来讲解下winhex模板编程的语法:
winhex模板头的常用关键字:
1.template:声明模板的名字 eg:template “海天数据恢复的winhex模板1″
2.description:描述参数,描述这个winhex模板的用途。

(保存好后,你可以在winhex模板管理器里看到你自定义的模板的名字,描述等信息。

)eg:description “这个winhex模板是用来。


3.applies_to:参数可以是file/disk/RAM。

指定该winhex模板的适用对象时文件、磁盘还是内存。

eg:applies_to disk
4.fixed_start offset:winhex模板的默认起始偏移量取决于光标停留的位置,而这个关键字是来指定偏移量起始位置。

eg:fixed_start 0x040
5.sector-aligned:作用是指定winhex模板从当前扇区的偏移0位置运行。

无参数。

6.requires offset:匹配数据,若发现指定偏移量的位置的数据不匹配,就会报错。

注意:这里的偏移量是相对于winhex模板起始偏移量计算的。

eg:requires 0x1fe 55aa
7.big-endian/little-endian:规定读取的字节顺序,也就是平日说的小端机、大端机的区别,内存的数据存储方向不一样。

无参数。

8.hexadecimal:使winhex模板中读到的数据都以十六进制方式显示,octal为八进制,decimal为十进制。

无参数。

9.read-only/read-write:规定读取权限。

无参数。

10.multiple:作用是使winhex模板上出现左右键来让你可以选择读取上一条或下一条记录,记录之间的跨度是该winhex模板涉及的所有字节的长度。

无参数。

11.begin与end:之间的区域用于存放程序主干。

这里作下winhex模板头知识总结:首先,winhex模板的命名需要关键字template加引号
完成。

description参数可以补充描述。

applies_to(RAM、file、disk)后面可以用于指定访
问对象的类型,使winhex模板适应当前工程的根本环境。

fixed_start可以为winhex模板
指定起始偏移量。

requires则制定更严格的winhex模板运行条件,要求winhex模板作用
范围内指定位置必须匹配指定数据。

big-endian、hexadecimal、read-only等都是作用于
显示输出的可选参数。

头部关键字没有强制规定“出场顺序”,对引号的要求也不严格。

此外,winhex模板可以用双斜杠添加注释,这是一个很好的编程习惯。

注意:数制属性关键字(hexadecimal等)、显示方向属性关键字(big-endian等)、读写属性
关键字(read-only等)都可以插入begin与end之间,用于临时改变数据的属性,注意这种
改变仅仅作用于紧随它们的数据类型声明语句,而并非全局。

下面说下程序主干里的常用关键字:
1.int8:带符号的8位整型,占用一字节,范围-128~127。

eg:int8 “身高”
2.uint8:无符号的8为整型,占用一字节,范围0~255。

同byte类型。

3.int16:带符号的16位整型,占用2字节。

不赘述了,与前面这些类似的还有:uint16, int32, uint32, int64, int24, uint24。

4.unit_flex:类似于c语言里位域的概念。

其语法是:unit_flex “要解释的位” “title”
例如:unit_flex “8,7,6,5,4,3,2,1,0” “permissions”,表示读取一个32位无符号整数并解释其
低9位。

注意,尽管unit_flex所表示的数据长度可能小于4个字节,但每次读取仍然按照4个字节
来计算,故而要特别注意位域的实际长度。

比如,我们要解释一个16位整型数值的前4
位和后12位,应当首先解释前4位,这时光标移动4字节。

unit_flex “3,2,1,0” “flexlow”
因为还有数据要从该16位整型数值中提取,故回退4个字节。

move -4 。

解释后12位。

unit_flex “15,14,13,12,11,10,9,8,7,6,5,4” “flexhigh” 由于16位整型数值只占用两个字节,
而实际光标移动4字节,故需要回退2字节:move -2, 否则会占用下一个数据的空间。

5.binary:每次读取一个字节,并解释为二进制样式。

6.char:读取一个字节,ascii码显示。

也可以用char[len]读取字符数组(字符串),len表示长度。

7.char16:读取两个字节,Unicode字符显示。

8.string:ascii字符串。

语法为string len “title”
9.string16:unicode字符串。

10.zstring:表示不管长度读取一个ascii字符串,遇到”NULL”时结束。

zstring16为其Unicode版本。

11.hex:表示直接读取字节而且并不将其解释为任何数据类型,直接显示。

12.float:占用4字节,浮点数,同c语言。

13.real:占用6字节,浮点数。

14.double:占用8字节,浮点数。

15.longdouble:占用10字节,浮点数。

16.Loop:实现简单的循环。

中括号中可以存放常量表示循环次数,也可以直接引用前面数据类型的title。

17.IfEqual:简单的if语句,判断是否相等。

比较的对象可以是常量,也可以是前面数据类型的title。

18.~:占位符。

一般用于循环内部数据类型的标题中,以形成数字递增的效果。

常常与numbering配合使用。

numbering可以用来指定占位符的初始值。

海天数据恢复提醒您:winhex模板使用方法讲解完毕,希望大家灵活运用,打造出属于自己的个性模板。

相关文档
最新文档