前言
最近在研究开发粒子群算法,其中有用到Peach的解析模块,将样本根据pit模板解析到各个字段。这里需要可以被解析的样本,但是奈何利用Peach自动化生成的样本均不可以被解析,所以需要根据pit中的Datamodel手动构建样本文件。
datamodel
以下是pit中的datamodel
<DataModel name="AutoManagerSet">
<Number name="TypeId" size="16" token="true" value="25 00" valueType="hex" mutable="false" />
<Number name="Length" size="16" token="true" value="3" mutable="false" />
<Choice minOccurs="1" maxOccurs="4">
<Number size="8" token="true" value="00" valueType="hex" mutable="false" />
<Number size="16" token="true" value="FF FF" valueType="hex" mutable="false" />
</Choice>
<Number name="test" size="4" token="true" value="5" mutable="false" maxOccurs="3"/>
<String name="string" value="test" />
</DataModel>
利用UE16进制编辑样本
image.png
这样可以很直观的根据pit来构建样本。
以下是构建过程中需要注意的点(根据Peach社区对pit的讲解来构建):
- 对于
mutable="false"
的字段,其value
值是不可以改变的; -
token="true"
一般指的是:?!
这样的符号; - 对于
Number
类型,社区是这样介绍的:
The Number element defines a binary number of lengths 8, 16, 24, 32, or 64 bits.
意思是其值只能是这么些长度。
例如:上述的<Number name="test" size="4" token="true" value="5" mutable="false" maxOccurs="3"/>
该字段,occurs只能为2,这样test
的长度为8,是合法的,其余均错; - 对于
string
类型,其值只能是数字或是大小写字母,其余一律不可以。社区定义如下The String element defines a single or double byte string.
不然会报error:String 'xxx' value contains invalid ascii bytes.
错误。
目前只统计以上这些,后续补充!
网友评论