自己制作winhex的模板
winhex有很多的官方模板,可以在网上下载(后缀tpl)并放至它的安装目录,即可使用。不过要是自己能自己制作,这才好玩,不是么?!
打开模板管理器,可以选中其中一个模板,下面有应用,有编辑,你点开编辑按钮,就可以看到对应的模板源码。而你点开那个新建按钮,就可以自己写模板了,最后保存到安装目录即可。提醒一点,我是在记事本下写好粘贴到新建后那个面板上的,因为我发现有好些符号它不支持,比如下划线、引号等,maybe是我自己没设置的原因,不过,这不是重点,略过。写好后,那个面板下有检查语法的按钮,通过它可判断你的代码是否语法正确。
闲话不多说,下面,我来讲解下模板编程的语法:
模板头的常用关键字:
1.template:声明模板的名字 eg:template "模板1"
2.description:描述参数,描述这个模板的用途。(保存好后,你可以在模板管理器里看到你自定义的模板的名字,描述等信息。)eg:description "这个模板是用来。。。"
3.applies_to:参数可以是file/disk/RAM。指定该模板的适用对象时文件、磁盘还是内存。eg:applies_to disk
4.fixed_start offset:模板的默认起始偏移量取决于光标停留的位置,而这个关键字是来指定偏移量起始位置。eg:fixed_start 0x040
5.sector-aligned:作用是指定模板从当前扇区的偏移0位置运行。无参数。
6.requires offset:匹配数据,若发现指定偏移量的位置的数据不匹配,就会报错。注意:这里的偏移量是相对于模板起始偏移量计算的。eg:requires 0x1fe "55aa"
7.big-endian/little-endian:规定读取的字节顺序,也就是平日说的小端机、大端机的区别,内存的数据存储方向不一样。无参数。
8.hexadecimal:使模板中读到的数据都以十六进制方式显示,octal为八进制,decimal为十进制。无参数。
9.read-only/read-write:规定读取权限。无参数。
10.multiple:作用是使模板上出现左右键来让你可以选择读取上一条或下一条记录,记录之间的跨度是该模板涉及的所有字节的长度。无参数。
11.begin与end:之间的区域用于存放程序主干。
这里作下模板头知识总结:首先,模板的命名需要关键字template加引号完成。description参数可以补充描述。applies_to(RAM、file、disk)后面可以用于指定访问对象的类型,使模板适应当前工程的根本环境。fixed_start可以为模板指定起始偏移量。requires则制定更严格的模板运行条件,要求模板作用范围内指定位置必须匹配指定数据。big-endian、hexadecimal、read-only等都是作用于显示输出的可选参数。头部关键字没有强制规定“出场顺序”,对引号的要求也不严格。此外,模板可以用双斜杠添加注释,这是一个很好的编程习惯。
注意:数制属性关键字(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。
eg:
byte "学号"
IfEqual "学号"
uint "成绩"
Else
uint "绩点”
EndIf
18.~:占位符。一般用于循环内部数据类型的标题中,以形成数字递增的效果。常常与numbering配合使用。numbering可以用来指定占位符的初始值。
eg:
uint32 "文件数目"
numbering
{
string16 "~号文件"
}["文件数目"] //占位符从1开始,循环代入string16 255 "~号文件"中。
下面是随手写的一个例子,很凑合的说~
源码:
template "the dbr of ntfs of jiu"
description "......"
applies_to disk
sector-aligned
requires 0x03 "4e54465320"
requires 0x1f0 "55aa"
little-endian
read-write
multiple
begin
hex "jmp"
char[] "OEM"
uint16 "bytes per sector"
uint8 "sectors per cluster"
uint16 "unused"
hex "zero"
hex "unused"
int64 "total sectors"
int64 "mft"
int64 "mftmirr"
byte "file record"
hex "......"
end
自定义模板的应用:

自己制作winhex的模板的更多相关文章
- 新闻系统——VS制作自己的模板
我们在做机房管理的项目时,就用过模板方法,建立一个模板,这样就会省很多事,我们不需要每次都添加同样的东西,比如我们的类窗体,就可以制作一个模板,将注释和需要引用的控件直接添加上,这可以省去很大的麻烦, ...
- html5开发制作,漂亮html5模板欣赏,H5网站建设
html5是什么? HTML5 是下一代的 HTML(超文本标记语言,网页的组成部分),HTML5是web开发世界的一次重大的改变,能适配pc.手机等各终端,跨平台性能极强,移动互联网是未来的趋势,h ...
- pageadmin CMS网站制作教程:模板概念解释
pageadmin CMS网站建设教程:模板概念解释 1.模板页 又叫视图页面,PageAdmin后台栏目或信息中用到的模板页面的统称,格式必须是.cshtml后缀文件,前端人员制作的页面默认都是ht ...
- spring集成freemaker 制作短信模板
1.配置configure的Bean,Bean中指定了模板文件的路径和刷新时间等配置. <!-- 配置freeMarkerConfigurer进行属性值的注入 --> <bean i ...
- 微软Word制作自己的模板
我们在用Word的时候,很多时候需要一定的格式. 这个时候,*.dotx文件出场了!它将带给我们自己的模板. 步骤: 首先,新建一个文档,选择空白文档: 图片大就大吧,不要在意这些细节. 编辑一下,保 ...
- Solidworks drwdot文件如何打开,如何制作Solidworks工程图模板
1 直接把这个文件拖放进Solidworks窗口 2 文件-保存图纸格式,另存为模板(slddrt文件) 3 搜索"Solidworks工程图如何使用,替换图纸格式模板文件.doc& ...
- DotNetBar for Windows Forms 12.9.0.0_冰河之刃重打包版及制作Visual Studio C#项目模板文件详解
关于 DotNetBar for Windows Forms 12.9.0.0_冰河之刃重打包版 --------------------11.8.0.8_冰河之刃重打包版-------------- ...
- [Hyper-V]制作一个干净的操作系统模板
描述: 在Hyper-V里创建虚拟机的时候,我们可以先来创建一个干净的操作系统,将其制作为操作系统模板,该虚拟机的磁盘文件也将被视作基础磁盘以方便基于它创建差异化磁盘 安装其它虚拟机的时候就可以差异化 ...
- Visual Studio 项目模板制作(二)
上一篇,我们制作了项目模板,本篇我制作项模板 首先,从我们需要导出模板的项目中,文件->导出模板,弹出 导出模板向导 对话框 选择项模板,点击下一步 选择要导出的项,点击下一步 选择要Refer ...
随机推荐
- Custom Ribbon in SharePoint 2010 & which not wrok when migrate from 2010 to 2013
博客地址 http://blog.csdn.net/foxdave 1. First of all, let me show you the ribbon modal in our project w ...
- PostgreSQL锁级别及什么操作获取什么锁
表级锁 大多数的表级锁是由内置的 SQL 命令获得的,但他们也可以通过锁命令来明确获取.可使用的表级锁包括: 访问共享(ACCESS SHARE) - SELECT 命令可在查询中引用的表上获得该锁. ...
- VScode+Flutter 开发继续踩坑
运行慢解决方法1:修改build.gradle,注释掉jcenter(),google().使用阿里的镜像.原因是jcenter google库无法访问到导致的问题.虽然我有万能的爬墙工具,开启全局代 ...
- 20155313 2016-2017-2 《Java程序设计》第八周学习总结
20155313 2016-2017-2 <Java程序设计>第八周学习总结 教材内容学习 十四章 NIO与NIO2 1.认识NIO NIO使用频道(Channel)来衔接数据节点,在处理 ...
- hdfs调优
本文章来自 hackershell.cn,转载请标注出处 描述 这篇文章主要从一些配置设置相关方面去调优Hadoop集群的笔记,内容来自网上或一些实践经验 1.HDFS审计日志 HDFS审计日志是一个 ...
- const T & 的适用范围
我们往往在类中的函数体,重载操作中看到 const T & 的影子,以前还是比较纳闷. 对于非内部数据类型的参数而言,象void Func(A a) 这样声明的函数注定效率比较底.因为函数体内 ...
- MySQL建表规范与常见问题 (go)
一. 表设计 库名.表名.字段名必须使用小写字母,“_”分割. 库名.表名.字段名必须不超过12个字符. 库名.表名.字段名见名知意,建议使用名词而不是动词. 建议使用InnoDB存储引擎. 存储精确 ...
- java web Servlet开发(一)
一.Servlet简介 Servlet是sun公司提供的一门用于开发动态web资源的技术. Sun公司在其API中提供了一个servlet接口,用户若想用发一个动态web资源(即开发一个Java程序向 ...
- NOIP2013 Day2
1.积木大赛 https://www.luogu.org/problemnew/show/1969 这道题在考试时暴力得比较麻烦,导致只得了80分,t了两个点. 思路为寻找一个区间内高度大于0的最低点 ...
- JavaWeb的过滤器Filter
Filter的作用是在请求到达web资源(HTML.css.Servlet.Jsp)之前拦截,做一个预处理. 创建一个类实现Filter接口,在web.xml中对文件进行配置 <filter&g ...