999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

一種針對(duì)JavaScript 引擎JIT 編譯器的模糊測(cè)試方法*

2021-01-26 04:00:40王軼駿
通信技術(shù) 2021年1期
關(guān)鍵詞:引擎優(yōu)化語(yǔ)言

王 越,孫 亮,王軼駿,薛 質(zhì)

(1.上海交通大學(xué),上海 200240;2.江蘇省南通市公安局,江蘇 南通 226001)

0 引言

Web 瀏覽器安全是用戶在網(wǎng)絡(luò)環(huán)境中至關(guān)重要的一環(huán),而JavaScript 引擎是瀏覽器中的重要組件,攻擊者可以通過(guò)釣魚網(wǎng)頁(yè)輕易地讓用戶觸發(fā)JavaScript 引擎漏洞。JavaScript 引擎又是內(nèi)存危險(xiǎn)的,觸發(fā)漏洞后攻擊者可以構(gòu)造特殊的原語(yǔ)來(lái)實(shí)現(xiàn)內(nèi)存的任意讀寫,從而控制被攻擊者的設(shè)備。JavaScript 引擎漏洞在近幾年頻繁出現(xiàn),伴隨的利用腳本都僅僅需要遠(yuǎn)程瀏覽器訪問(wèn),范圍覆蓋Windows、MacOS、iOS、Android 各種操作系統(tǒng),故JavaScript引擎的安全問(wèn)題已經(jīng)是安全研究的重點(diǎn)對(duì)象。

近幾年來(lái),JavaScript 引擎漏洞中JIT 編譯器的漏洞占據(jù)了越來(lái)越大的比重。JIT 編譯器,全稱(Just-In-Time)是一種程序語(yǔ)言提高運(yùn)行效率的方法。如圖1 所示,JavaScript 引擎解釋執(zhí)行JavaScript 的流程為:先通過(guò)詞法和語(yǔ)法分析將JavaScript 腳本轉(zhuǎn)化為AST 樹,然后編譯為中間語(yǔ)言字節(jié)碼,接著進(jìn)行逐步解釋執(zhí)行,當(dāng)執(zhí)行的過(guò)程出現(xiàn)多次循環(huán)或者多次函數(shù)調(diào)用時(shí),JIT 編譯器會(huì)將該部分字節(jié)碼重新編譯,通過(guò)編譯優(yōu)化提升運(yùn)行效率,最終轉(zhuǎn)化為符合操作系統(tǒng)的機(jī)器碼并執(zhí)行。

圖1 解釋執(zhí)行JavaScript 流程

JIT 優(yōu)化階段,JIT 會(huì)將優(yōu)化拆分成為多個(gè)步驟(如常數(shù)折疊、循環(huán)不變量提升等),這些步驟即為每一個(gè)具體的JIT 優(yōu)化階段。JIT 優(yōu)化時(shí)會(huì)將需要優(yōu)化的代碼進(jìn)行分析,當(dāng)其滿足優(yōu)化階段的條件時(shí),進(jìn)行優(yōu)化。

JIT 編譯器漏洞,主要包含的是JIT 優(yōu)化相關(guān)的漏洞,優(yōu)化漏洞通常在JIT 編譯優(yōu)化過(guò)程中利用錯(cuò)誤預(yù)測(cè)或繞過(guò)檢查而達(dá)到利用。其中包含繞過(guò)邊界檢查,如CVE-2015-0817、CVE-2017-2547 和CVE-2018-0769;繞過(guò)類型檢查,如CVE-2017-11802、CVE-2018-17463 和CVE-2018-4233;以及各類其他類型漏洞。

模糊測(cè)試是一種自動(dòng)化漏洞挖掘技術(shù)。尤其在針對(duì)瀏覽器引擎這類復(fù)雜的系統(tǒng)時(shí),模糊測(cè)試相比代碼審計(jì)等其他方式有著更高的挖掘漏洞效率。其核心思想是將隨機(jī)生成的輸入重復(fù)提供給應(yīng)用程序,然后在處理輸入直至程序退出期間,監(jiān)視程序是否出現(xiàn)錯(cuò)誤情況。模糊測(cè)試主要分為兩類,基于生成的方法和基于變異的方法。分述如下:

基于生成的模糊測(cè)試方法,每個(gè)輸入文件都是從頭開始生成的,通常遵循一組預(yù)定義的規(guī)則。該規(guī)則將是上下文無(wú)關(guān)并會(huì)限定所有輸入的集合。在生成的過(guò)程中,通過(guò)隨機(jī)選擇實(shí)現(xiàn)隨機(jī)生成。

基于變異的模糊測(cè)試方法,是從一組已知良好的種子文件開始,然后以隨機(jī)方式對(duì)它們進(jìn)行變異。可能的變異包含比特和字節(jié)翻轉(zhuǎn)、遞增和遞減整數(shù)值、插入預(yù)定義的特殊整數(shù)和字符串值等。

在模糊測(cè)試程序運(yùn)行后便會(huì)不斷生成測(cè)試樣本,讓目標(biāo)程序執(zhí)行,獲取執(zhí)行結(jié)果并統(tǒng)計(jì)。衡量模糊測(cè)試對(duì)目標(biāo)程序漏洞挖掘的進(jìn)度,通常使用的是覆蓋率指標(biāo)。覆蓋率是通過(guò)樁來(lái)計(jì)算的,樁存在于目標(biāo)程序的分支跳轉(zhuǎn)和函數(shù)調(diào)用處,通常都是在編譯目標(biāo)程序時(shí)由編譯器完成插樁工作[1]。每次執(zhí)行目標(biāo)程序后,模糊測(cè)試工具可以獲得執(zhí)行過(guò)程中抵達(dá)的樁信息,計(jì)算抵達(dá)過(guò)的樁數(shù)量相對(duì)于總數(shù)的占比,即為覆蓋率指標(biāo)。

為了能盡快提高覆蓋率,提出了基于覆蓋率為導(dǎo)向的模糊測(cè)試方法,當(dāng)樣本抵達(dá)了新的樁,則將其確定為“有趣”的樣本保留,在未來(lái)繼續(xù)對(duì)其進(jìn)行變異,如此往復(fù),逐漸遍歷系統(tǒng)的所有空間。

1 研究現(xiàn)狀

在現(xiàn)今針對(duì)JavaScript引擎的模糊測(cè)試工具中,有基于規(guī)則生成的[2,3],也有基于變異生成的[4,5,6,7],本節(jié)會(huì)介紹當(dāng)今主流的幾款針對(duì)JavaScript 引擎的模糊測(cè)試工具[2,6,8],并分析其使用的模糊測(cè)試技術(shù)。

1.1 CodeAlchemist

這是一款基于語(yǔ)料庫(kù)的生成模糊測(cè)試工具,從JavaScript 種子文件中分解出代碼單元片段,對(duì)其進(jìn)行變量重命名、數(shù)據(jù)流分析、類型分析后并放入代碼塊池中,然后對(duì)代碼塊池中的片段進(jìn)行隨機(jī)選擇,組合生成JavaScript 測(cè)試樣本。CodeAlchemist 在組合代碼片段時(shí),會(huì)考慮上下文約束,從符合變量類型和數(shù)量的代碼片段中隨機(jī)選擇。該方法成功提高了模糊測(cè)試樣本的成功率。

1.2 Fuzzilli

這是一款基于中間語(yǔ)言的模糊測(cè)試工具,F(xiàn)uzzilli 定義了一種新的中間語(yǔ)言FuzzIL 并在其上進(jìn)行生成和變異,在組合了一系列中間語(yǔ)言后,統(tǒng)一將其提升為JavaScript 測(cè)試樣本。提升過(guò)程時(shí)基于上下文和類型系統(tǒng),測(cè)試樣本有著較高的JavaScript語(yǔ)義正確性,并且變異過(guò)程是基于覆蓋率導(dǎo)向的,可以達(dá)到較高的覆蓋率。

1.3 DIE

這是一款基于類型語(yǔ)法樹的變異模糊測(cè)試工具,將JavaScript 種子文件轉(zhuǎn)為語(yǔ)法樹,然后通過(guò)類型分析,產(chǎn)生包含類型標(biāo)識(shí)的語(yǔ)法樹(Typed AST)。DIE 基于類型語(yǔ)法樹并保留種子文件結(jié)構(gòu)和類型特征進(jìn)行變異,優(yōu)質(zhì)的樣本對(duì)于DIE 非常重要,故其選擇了大量以往的JavaScript 崩潰樣本。

1.4 分析

對(duì)于現(xiàn)今針對(duì)JavaScript 引擎的模糊測(cè)試工具而言,測(cè)試樣本的成功率和覆蓋率是重要的衡量指標(biāo)。對(duì)于JavaScript 引擎中的JIT 編譯器,測(cè)試樣本成功率和覆蓋率同樣是衡量模糊測(cè)試性能的重要指標(biāo)。其中測(cè)試樣本成功率指成功進(jìn)行JIT 優(yōu)化并執(zhí)行優(yōu)化代碼的樣本的比例,而覆蓋率指JIT 編譯器部分的覆蓋率。

當(dāng)今針對(duì)JavaScript 引擎的模糊測(cè)試工具對(duì)JIT引擎的測(cè)試樣本成功率不高。原因?yàn)椋海?)JIT 引擎需要特殊的條件進(jìn)行觸發(fā),并不是所有測(cè)試樣本都會(huì)觸發(fā)JIT 優(yōu)化;(2)JIT 代碼會(huì)出現(xiàn)優(yōu)化退出的情況,而以一個(gè)會(huì)產(chǎn)生優(yōu)化退出的樣本作為種子文件時(shí),會(huì)產(chǎn)生許多不成功的測(cè)試樣本;(3)生成過(guò)長(zhǎng)的樣本會(huì)影響JIT 的運(yùn)行時(shí)間而導(dǎo)致超時(shí)。

當(dāng)今針對(duì)JavaScript 引擎的模糊測(cè)試工具對(duì)JIT引擎的覆蓋率也不高。原因?yàn)椋海?)需要擁有優(yōu)質(zhì)的JIT 種子文件作為變異樣本;(2)在模糊測(cè)試JIT 優(yōu)化階段時(shí)較為盲目,無(wú)法針對(duì)某一JIT 優(yōu)化階段進(jìn)行專一的探索。

2 設(shè)計(jì)思路

該節(jié)會(huì)介紹本模糊測(cè)試引擎的設(shè)計(jì)思路,包含生成JIT 種子文件、檢測(cè)和變異三個(gè)部分。

2.1 生成JIT 種子文件

從觸發(fā)JIT 優(yōu)化條件而言,需要一個(gè)循環(huán)被多次執(zhí)行,這樣在循環(huán)內(nèi)部的代碼將會(huì)被JIT 優(yōu)化。故設(shè)計(jì)了一個(gè)JIT 種子文件的模板,包含:(1)一個(gè)將要被優(yōu)化的opt 函數(shù)內(nèi)部;(2)觸發(fā)JIT 優(yōu)化的循環(huán);(3)外部不被優(yōu)化的代碼。如圖2 所示,在修改了JavaScript 引擎的運(yùn)行參數(shù)后,可以將多次調(diào)用的數(shù)量減少為10~1000 次。

圖2 種子文件生成結(jié)構(gòu)

在生成JIT 種子文件時(shí),采用基于中間語(yǔ)言的生成方式。相比基于語(yǔ)法或基本塊的生成方式,中間語(yǔ)言可以構(gòu)造更為泛型和復(fù)雜的句法結(jié)構(gòu)。另外在從中間語(yǔ)言提升為JavaScript 的過(guò)程中會(huì)考慮上下文約束,每一個(gè)變量不僅保存類型信息,還有方法、屬性、原型鏈信息,相比基于類型語(yǔ)法樹的方法能夠生成語(yǔ)義正確性更高的樣本。如圖3 顯示了如果只通過(guò)類型語(yǔ)法樹進(jìn)行生成可能導(dǎo)致的語(yǔ)義錯(cuò)誤,由于未考慮到原型鏈,會(huì)認(rèn)為變量a 作為數(shù)組類型仍擁有splice 方法。

圖3 單一的類型系統(tǒng)可能發(fā)生的語(yǔ)義錯(cuò)誤

2.2 檢測(cè)

在檢測(cè)上,除了崩潰捕獲、運(yùn)行時(shí)長(zhǎng)和覆蓋率信息,還需要檢測(cè)JIT 優(yōu)化是否成功執(zhí)行。JIT 編譯后會(huì)在代碼中插入一些檢查來(lái)確保JIT 優(yōu)化的正確執(zhí)行,而當(dāng)檢查不被通過(guò)時(shí),JIT 優(yōu)化將會(huì)被退出,返回到原本的字節(jié)碼進(jìn)行逐步解釋執(zhí)行。在這種情況下,該測(cè)試樣本并沒(méi)有對(duì)JIT 編譯器進(jìn)行有效的模糊測(cè)試。

JIT 種子文件在生成后需要被執(zhí)行一次,統(tǒng)計(jì)其運(yùn)行時(shí)長(zhǎng)、覆蓋率和JIT 執(zhí)行情況,并以此決定其是否被設(shè)置優(yōu)先級(jí)放入變異隊(duì)列中。如果生成的JIT 種子文件沒(méi)有觸發(fā)JIT 優(yōu)化或退出JIT 優(yōu)化,則認(rèn)為對(duì)該種子文件的變異無(wú)法有效地對(duì)JIT 進(jìn)行模糊測(cè)試,將會(huì)拋棄該種子文件。當(dāng)一個(gè)JIT 種子文件抵達(dá)了新的樁,成功執(zhí)行了JIT 優(yōu)化,并且有較短的運(yùn)行時(shí)長(zhǎng)后,該種子文件將會(huì)被設(shè)置一個(gè)較高的優(yōu)先級(jí)放入變異隊(duì)列中。

2.3 變異

變異會(huì)選擇一個(gè)JIT 種子文件,在不改變其中間語(yǔ)言結(jié)構(gòu)的情況下,重新生成中間語(yǔ)言中可替換的變量,產(chǎn)生新的測(cè)試樣本。使用該方法的原因是觸發(fā)JIT 優(yōu)化每個(gè)階段的條件和每一條JIT 優(yōu)化的JavaScript 語(yǔ)句都有較大的關(guān)系。如果如Fuzzilli 在每次變異進(jìn)行插入、合并等細(xì)粒度較大的變異操作,將會(huì)大幅修改測(cè)試樣本結(jié)構(gòu),從而改變已觸發(fā)的JIT 優(yōu)化階段,導(dǎo)致盲目地對(duì)JIT 優(yōu)化階段進(jìn)行模糊測(cè)試。而本方法保持了中間語(yǔ)言結(jié)構(gòu),并在此之上進(jìn)行的變異能大概率確保觸發(fā)的測(cè)試樣本的JIT優(yōu)化階段和JIT 種子文件的JIT 優(yōu)化階段相同,從而能更深入地探索JIT優(yōu)化階段,以達(dá)到更高的覆蓋率。

種子文件的能量分配規(guī)則類似主流的模糊測(cè)試工具[9,10]。但對(duì)于優(yōu)化函數(shù)內(nèi)部和外部的能量分配和變異方式卻是不同的。每次對(duì)一個(gè)種子文件進(jìn)行變異會(huì)執(zhí)行數(shù)次基于中間語(yǔ)言的變異操作,每次操作在優(yōu)化函數(shù)內(nèi)部的概率會(huì)大于在外部的概率。在JIT 優(yōu)化函數(shù)內(nèi)部會(huì)采用保留中間語(yǔ)言結(jié)構(gòu)的變異方式,而在優(yōu)化函數(shù)外部則會(huì)細(xì)粒度大的變異方式。

3 實(shí)現(xiàn)

本節(jié)會(huì)分別敘述本模糊測(cè)試工具實(shí)現(xiàn)上較為核心的幾個(gè)部分。

3.1 中間語(yǔ)言

中間語(yǔ)言是一種抽象的操作,本方法定義了如LoadProperty,StoreElement,CallMethod,BeginIf 等中間語(yǔ)言,中間語(yǔ)言需要盡可能涵蓋JavaScript 的各種語(yǔ)言特征,如變量聲明、賦值語(yǔ)句、一元操作符、二元操作符、函數(shù)調(diào)用、方法調(diào)用、創(chuàng)建對(duì)象、控制流等,如圖4 所示。

圖4 中間語(yǔ)言描述

在生成中間語(yǔ)言后,對(duì)其逐條分析其上下文環(huán)境,從已有的上下文容器中獲取合適的變量,然后再分析該條中間語(yǔ)言生成的返回值變量,將其存入上下文容器中,最終提升為JavaScript 語(yǔ)句。

3.2 上下文容器

系統(tǒng)需要知道每一條中間語(yǔ)言執(zhí)行后,上下文變量的情況,來(lái)確保語(yǔ)義的正確性。通過(guò)維持一個(gè)容器,在分析中間語(yǔ)言的過(guò)程中實(shí)時(shí)地將上下文變量存儲(chǔ)在容器中。容器中存儲(chǔ)著JavaScript 內(nèi)置的構(gòu)造器對(duì)象,也會(huì)將全局變量和局部變量存儲(chǔ)其中。在逐條分析中間語(yǔ)言時(shí),當(dāng)遇到if-else、for 循環(huán)、函數(shù)聲明等會(huì)產(chǎn)生新作用域的中間語(yǔ)言,會(huì)生成一個(gè)新的域環(huán)境,在新作用域中生成的變量會(huì)被存儲(chǔ)在新域環(huán)境中。當(dāng)退出該作用域時(shí),會(huì)將該域環(huán)境以及其中的變量全部刪除。容器同時(shí)為系統(tǒng)提供獲取當(dāng)前上下文環(huán)境下各種類型的變量接口。

3.3 變量

每一個(gè)變量都繼承于Variable 類,該類包含了變量名、類型、方法、屬性、原型鏈和函數(shù)簽名。在JavaScript 中的內(nèi)置類型有許多,本方法將其分類為基礎(chǔ)的Undefined、Int、Float、String、Object、Boolean、Function、Constructor。另外針對(duì)Object 對(duì)象再根據(jù)不同的構(gòu)造器劃分,包含Symbol、Map、Set、ArrayBuffer 等。每一種類型都存儲(chǔ)了屬性名和方法名以及原型鏈的上一個(gè)對(duì)象指針。對(duì)于內(nèi)置對(duì)象的方法或者自定義的函數(shù),會(huì)存儲(chǔ)定義方法所需參數(shù)和返回值的類型作為函數(shù)簽名,以便在調(diào)用方法時(shí)準(zhǔn)確地從上下文容器中取出可用的變量。值得注意的是,在調(diào)用方法的過(guò)程中,需要考慮原型鏈的規(guī)則,優(yōu)先尋找當(dāng)前對(duì)象的方法是否被定義,然后是構(gòu)造器的方法是否被定義,再尋找內(nèi)置的方法。如果沒(méi)有則去尋找原型鏈上一個(gè)對(duì)象的構(gòu)造器方法直至到達(dá)原型鏈頭節(jié)點(diǎn)。如圖5 所示,定義了JavaScript 中Array 的內(nèi)置方法,在該對(duì)象中,鍵名對(duì)應(yīng)著方法名,值對(duì)應(yīng)著參數(shù)列表的類型,數(shù)組最后一項(xiàng)為返回值類型。

圖5 系統(tǒng)對(duì)JavaScript 內(nèi)置方法的描述

3.4 程序執(zhí)行

生成測(cè)試樣本算法如圖6 所示。

圖6 生成測(cè)試樣本算法

模糊測(cè)試對(duì)于運(yùn)行效率有著很高的要求,所以系統(tǒng)應(yīng)盡可能提高運(yùn)行效率。系統(tǒng)的限速瓶頸在于JavaScript 代碼的執(zhí)行時(shí)長(zhǎng),故參考了AFL[9]的思路,使用了Fork Server 來(lái)節(jié)約進(jìn)程的創(chuàng)建開銷。系統(tǒng)架構(gòu)如圖7 所示,模糊測(cè)試系統(tǒng)在選擇了一個(gè)種子文件后會(huì)進(jìn)行變異并生成JavaScript 測(cè)試樣本,而在另一處,F(xiàn)ork Server 在解釋執(zhí)行JavaScript 代碼前等待信號(hào),接收到信號(hào)后fork 進(jìn)程執(zhí)行樣本,獲得結(jié)果并統(tǒng)計(jì)執(zhí)行結(jié)果(崩潰、運(yùn)行錯(cuò)誤、超時(shí)、運(yùn)行成功)。

圖7 系統(tǒng)運(yùn)行模糊測(cè)試流程

4 測(cè)試與分析

本模糊測(cè)試工具JITFuzz 使用Python3 開發(fā),實(shí)現(xiàn)生成種子文件和變異功能,F(xiàn)ork Server 和執(zhí)行結(jié)果統(tǒng)計(jì)使用C 語(yǔ)言編寫。

4.1 實(shí)驗(yàn)指標(biāo)

采用成功率、超時(shí)率、JIT 成功率、JIT 覆蓋率作為評(píng)價(jià)本模糊測(cè)試系統(tǒng)的主要指標(biāo),描述如下。

成功率:執(zhí)行成功的測(cè)試樣本數(shù)量/測(cè)試樣本總數(shù)。

超時(shí)率:執(zhí)行超時(shí)的測(cè)試樣本數(shù)量/測(cè)試樣本總數(shù)。

JIT 成功率:執(zhí)行成功并成功觸發(fā)JIT 優(yōu)化的測(cè)試樣本數(shù)量/測(cè)試樣本總數(shù)。

JIT 覆蓋率:抵達(dá)的樁的數(shù)量/JIT 編譯器的樁的總數(shù)。

4.2 實(shí)驗(yàn)結(jié)果

如圖8 所示,JITFuzz 和Fuzzilli 的測(cè)試樣本成功率和超時(shí)率較為接近,優(yōu)于CodeAlchemist 和DIE的測(cè)試樣本成功率和超時(shí)率。說(shuō)明本方法采用了基于中間語(yǔ)言的生成和變異算法,并考慮了上下文和變量特性,有效地提升了測(cè)試樣本的JavaScript 語(yǔ)義正確性,能夠生成正確性更高的測(cè)試樣本。

圖8 測(cè)試樣本成功率和超時(shí)率統(tǒng)計(jì)

考慮在所有測(cè)試樣本中,成功觸發(fā)JIT 優(yōu)化的比例,統(tǒng)計(jì)結(jié)果如圖9 所示,JITFuzz 相比Code Alchemist、DIE、Fuzzilli 都有更高的JIT 成功率。這說(shuō)明本方法采用生成JIT 種子文件和基于中間語(yǔ)言結(jié)構(gòu)的變異方法所產(chǎn)生的樣本,有更高的成功執(zhí)行JIT 優(yōu)化的概率。

此外,JITFuzz 和Fuzzilli 分析比較了模糊測(cè)試的JIT 覆蓋率情況。通過(guò)對(duì)JavaScript 引擎中JIT 編譯器部分的插樁,統(tǒng)計(jì)覆蓋率情況如圖10 所示。

圖9 測(cè)試樣本JIT 成功率統(tǒng)計(jì)

圖10 JITFuzz 和Fuzzilli 的JIT 覆蓋率統(tǒng)計(jì)

相比于Fuzzilli,JITFuzz 抵達(dá)的JIT 覆蓋率是Fuzzilli 的1.75 倍,并且在相同的樣本數(shù)量下,JITFuzz 能達(dá)到更高的覆蓋率,說(shuō)明單位樣本觸發(fā)覆蓋率的數(shù)量更高,體現(xiàn)了本方法所采用的變異方法在針對(duì)JIT 編譯器進(jìn)行模糊測(cè)試時(shí)有更好的效果。

5 結(jié)語(yǔ)

本文提出了一種針對(duì)JavaScript 引擎JIT 編譯器進(jìn)行模糊測(cè)試的方法。該方法借鑒了前人的思路,采用了基于覆蓋率和中間語(yǔ)言的技術(shù),為能夠順利對(duì)JavaScript引擎進(jìn)行模糊測(cè)試打下了良好的基礎(chǔ)。本文在此之上針對(duì)JIT 編譯器提出了新穎的模糊測(cè)試方法,首先利用觸發(fā)JIT 優(yōu)化的模板生成JIT 種子文件,并針對(duì)合適的種子文件進(jìn)行保持中間語(yǔ)言結(jié)構(gòu)的變異。這樣可以使得測(cè)試樣本有更高的JIT優(yōu)化概率和對(duì)JIT 優(yōu)化階段更為專注的探索,有利于覆蓋率的提升。實(shí)驗(yàn)結(jié)果表明,相比于現(xiàn)今較為流行的模糊測(cè)試工具,基于本文所實(shí)現(xiàn)的模糊測(cè)試工具JITFuzz 有更高的JIT 成功率和JIT 覆蓋率,表明本方法針對(duì)JIT 編譯器的模糊測(cè)試具有更好的性能優(yōu)越性,為進(jìn)一步的漏洞挖掘提供了良好的基礎(chǔ)。

猜你喜歡
引擎優(yōu)化語(yǔ)言
超限高層建筑結(jié)構(gòu)設(shè)計(jì)與優(yōu)化思考
民用建筑防煙排煙設(shè)計(jì)優(yōu)化探討
關(guān)于優(yōu)化消防安全告知承諾的一些思考
一道優(yōu)化題的幾何解法
語(yǔ)言是刀
文苑(2020年4期)2020-05-30 12:35:30
讓語(yǔ)言描寫搖曳多姿
藍(lán)谷: “涉藍(lán)”新引擎
商周刊(2017年22期)2017-11-09 05:08:31
累積動(dòng)態(tài)分析下的同聲傳譯語(yǔ)言壓縮
我有我語(yǔ)言
無(wú)形的引擎
河南電力(2015年5期)2015-06-08 06:01:46
主站蜘蛛池模板: 免费毛片a| 97av视频在线观看| 美女被狂躁www在线观看| 欧美高清视频一区二区三区| 亚洲天堂色色人体| 91精品国产综合久久不国产大片| 91精品视频在线播放| 欧美精品啪啪一区二区三区| 国产成人高精品免费视频| 亚洲精选高清无码| 青青青伊人色综合久久| 91久久天天躁狠狠躁夜夜| 国产精品青青| 99视频精品全国免费品| 亚洲欧美日韩成人在线| 一级毛片免费观看不卡视频| 91精品国产一区| 国产精品久久久久久久伊一| 国产福利不卡视频| 在线国产三级| 国产视频a| 欧美影院久久| 97超碰精品成人国产| 无码有码中文字幕| 久久精品无码一区二区日韩免费| 91精品国产福利| 国产午夜在线观看视频| 日韩区欧美国产区在线观看| 亚洲精品大秀视频| 亚洲国产亚综合在线区| www成人国产在线观看网站| 伊人久久大香线蕉综合影视| 亚洲色欲色欲www网| 国产国拍精品视频免费看| 日本精品视频| 国产成人综合网在线观看| 色综合久久88| 亚洲第一成年免费网站| 一级一毛片a级毛片| 丁香六月激情婷婷| 深夜福利视频一区二区| 亚洲高清无码久久久| 中国国语毛片免费观看视频| 麻豆精品国产自产在线| 欧美激情网址| 亚洲男人的天堂久久香蕉| 国产黄视频网站| 日韩精品久久久久久久电影蜜臀| 91麻豆国产在线| 波多野结衣无码视频在线观看| 国内精品视频区在线2021| 色久综合在线| 亚洲天堂自拍| 天堂在线亚洲| 欧美在线网| 国产chinese男男gay视频网| 欧美一区二区精品久久久| 91久久国产综合精品女同我| 色屁屁一区二区三区视频国产| 亚洲日韩在线满18点击进入| 国产欧美日本在线观看| 老司机aⅴ在线精品导航| 玖玖精品在线| 91福利在线观看视频| 亚洲成A人V欧美综合| 国产真实二区一区在线亚洲| 中文字幕av一区二区三区欲色| 亚洲欧美一区二区三区图片| 亚洲国产成人精品一二区| 久久这里只有精品免费| 国产美女91呻吟求| 国产亚洲精品无码专| 久久综合一个色综合网| 国产精品片在线观看手机版| 免费福利视频网站| 国产欧美日韩一区二区视频在线| 永久免费无码成人网站| 亚洲热线99精品视频| 国产午夜小视频| 久久毛片免费基地| 中国国语毛片免费观看视频| 欧美性精品|