溫州網(wǎng)站建設(shè)優(yōu)化自己的品牌怎么做加盟推廣
1. 引入
基于變異策略的模糊測試,有兩個重點:
(1)seed:種子,初始的合法輸入序列。
(2)mutation:對已經(jīng)存在的輸入序列,進(jìn)行微調(diào)。
所以,mutation的策略就比較重要,常用的mutation策略如下所示。
2. mutation策略(變異策略)
-
Flip one random bit(翻轉(zhuǎn)一個隨機(jī)位)
- 把某一bit從0變?yōu)?,或者從1變?yōu)?
-
Alternate one or multiple consecutive bytes(交換一個或多個連續(xù)字節(jié))
- 比如將每個字節(jié)的值與其相鄰字節(jié)的值進(jìn)行交換或按某種規(guī)則改變
-
Erase one or multiple bytes from random offsets(從隨機(jī)偏移量處刪除一個或多個字節(jié))
- 從某個隨機(jī)的位置開始,隨機(jī)刪除一部分字節(jié)數(shù)據(jù)
-
Insert one or multiple bytes to random offsets(在隨機(jī)偏移量處插入一個或多個字節(jié))
- 從某個隨機(jī)的位置開始,隨機(jī)插入一部分字節(jié)數(shù)據(jù)
-
Repeat existing bytes multiple times(重復(fù)現(xiàn)有字節(jié)多次)
- 選擇數(shù)據(jù)中的一段字節(jié)序列,并將這段序列重復(fù)多次插入到原位置或其他位置,可能導(dǎo)致數(shù)據(jù)膨脹或程序邏輯錯誤。
-
Add a word from a predefined dictionary(添加一個來自預(yù)定義字典的單詞)
- 從字典中隨機(jī)選擇一個單詞,并將其插入到數(shù)據(jù)的某個位置
-
Shuffle consecutive bytes (reorder multiple bytes randomly)(隨機(jī)重排連續(xù)字節(jié))
- 將一段連續(xù)字節(jié)的順序隨機(jī)打亂,而不改變這些字節(jié)的值。
-
Copy a substring and paste it randomly offsets(復(fù)制一個子字符串并隨機(jī)粘貼到偏移量處)
- 從數(shù)據(jù)中復(fù)制一段子字符串,并將其粘貼到數(shù)據(jù)的另一個隨機(jī)位置。
-
Crossover(交叉)
- 也稱為雜交或基因重組,這個操作通常涉及兩個或多個數(shù)據(jù)樣本,通過交換它們的一部分來生成新的數(shù)據(jù)樣本。這是遺傳算法的手法。
-
Apply mutation one or more times on a single seed input(對單個種子輸入應(yīng)用一次或多次變異)
- 選擇一個初始的“種子”輸入,然后對其應(yīng)用上述一個或多個變異策略一次或多次,以生成多個不同的測試樣本。
3. 參考
http://sigsoft.or.kr/wp-content/uploads/2021/01/20210324_005245.pdf