前言
最近在研究開發粒子群算法,其中有用到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.
錯誤。
目前只統計以上這些,后續補充!