龍廷艷,萬 良+,丁紅衛
1.貴州大學 計算機科學與技術學院,貴陽 550025
2.貴州大學 計算機軟件與理論研究所,貴陽 550025
隨著網絡技術的高速發展,企業和單位提供的Web服務呈現指數級的增長,據國家信息安全漏洞庫[1](China National Vulnerability Database of Information Security,CNNVD)2018年網安時情的調查,網絡安全技術平臺必須具備的8個特性,首要的就是覆蓋電子郵件和Web 安全主流的威脅,占比為38%。而JavaScript 作為一種與后臺通信的客戶端腳本語言,在提高網頁動態性和Web 交互方式的同時,因其不需編譯就可執行給Web 安全領域帶來檢測的困難。惡意代碼在植入和傳播的過程中,利用邏輯異或運算、分割字符串和壓縮字符串等混淆手段進行惡意代碼的轉碼變形,從而躲避安全軟件的檢測達到自我保護的目的,這使得惡意代碼的檢測工作變得復雜和困難;此外,同一個惡意代碼也會產生大量的同源惡意代碼樣本,這對惡意代碼的特征提取、識別、分類和檢測就顯得尤為重要。
目前,惡意代碼靜態分析[2]方法主要有:(1)基于簽名(signature-based)的方法,通過識別程序所獨有的二進制字符串進行檢測,該方法主要依賴已知的簽名數據庫[3],該方法的缺點是無法查殺新的未知程序,而且需要定期更新和維護簽名庫。(2)基于啟發式規則(heuristic-based)的方法,是通過分析人員對已知的惡意代碼提取具有啟發式的規則,并通過該規則發現新的惡意代碼。上述兩種方法的不足都是只能在計算機被惡意代碼感染后才能被檢測到,而不能及時發現新的未知惡意代碼[4]。(3)基于數據挖掘(data mining)的方法,該方法是一種基于統計學自動發掘數據規律的方法,通過分析海量樣本的統計規律建立判別模型,從而讓攻擊者難以掌握避免查殺的規律。缺點是數據挖掘的算法屬于有監督算法,對實時場景中豐富的樣本這些算法能否勝任還有待驗證[5]。(4)基于機器學習(machine learning)的方法,該方法不需要執行腳本,主要通過分析代碼的結構、模糊的文本信息、語法信息來提取惡意代碼特征,再利用機器學習算法進行識別和分類。如Likarish等人[6]依據JavaScript 代碼中特殊函數和特殊字符出現的次數作為惡意代碼的關鍵特征,進行統計分析,提取了65個JavaScript 特征,并建立4個分類器Na?ve Bayes、AD Tree、SVM(support vector machine)和RIPPER(repeated incremental pruning to produce error reduction)來檢測網頁中惡意的JavaScript 代碼。Wang等人[7]實現了一個JavaScript惡意軟件檢測并分類的工具(JavaScript malware detection and classification,JSDC)。該工具基于機器學習的方法,利用可預期的文本信息、程序結構和風險函數調用等作為特征;對于待檢測的惡意軟件,該工具又根據其攻擊特征向量和動態執行軌跡將其分為己知的八種攻擊類型。雖然機器學習的方法在惡意代碼檢測中得到了廣泛的認可,但機器學習算法通常需要復雜的特征工程提取惡意代碼中的特征,如文獻[8],需要對JavaScript 源碼進行分析后方可得到77個關鍵的特征,不僅耗費時間,而且該方法對特征選擇的依賴較高,所提取特征的好壞直接影響最終的識別效果。如今出現的深度學習方法,不需要這樣的特征工程,只需將數據直接傳遞給網絡,就可立即實現良好的性能,完全消除了提取特征過程中繁重而且很有挑戰性的特征工程。并且當輸入是二進制數據時堆棧降噪自編碼器(stacked denoising autoencoder,SDA)更適合文本的分類[9]且SDA 比其他的非監督學習方法表現都好[10]。Wang等人[11]提出由SDA和邏輯回歸(logistic regression,LR)組成的深層學習框架,其中SDA被用來從JavaScript代碼中提取高級特征,LR作為分類器用于區分惡意和良性的JavaScript代碼。Li等人[12]使用自編碼器降低數據的維度并提取惡意代碼的特征,然后采用深度信念網絡(deep belief networks,DBN)進行惡意代碼的檢測,在最后一層使用有監督的誤差反向傳播(error back propagation,BP)算法進行分類,實驗結果表明檢測準確率高于僅僅使用DBN 訓練的情況,而且還降低了模型的時間復雜度。
為獲取惡意代碼深層本質特征信息,提高識別的精確度,本文提出了一種基于堆棧式稀疏降噪自編碼網絡(stacked sparse denoising autoencoder network,sSDAN)取代傳統的特征提取方法。首先,采用無監督自編碼器自動提取特征并降低數據維度,從高維的數據中概括出具有代表性的少量數據,用來表示數據的最本質特征。其次,在自編碼器的基礎上添加稀疏約束條件,從而具有更優的特征學習能力,利用降噪自編碼網絡(denoising autoencoder network,DAN)進行主動染噪的學習訓練,可以得到有效去噪后的深度特征提取模型。最后,將惡意代碼檢測與sSDAN 模型結合,一方面可以提高惡意代碼檢測的準確性和穩定性;另一方面,sSDAN通過堆疊多個加了噪聲的稀疏自編碼搭建的多層神經網絡架構,實現對數據各層次的特征表達,通過整體微調將特征提取和分類器有機結合,充分挖掘數據中的變化特征來優化檢測性能,具有較好的目標信息表示能力、魯棒性和泛化性。

Fig.1 Structure of AE圖1 自編碼網絡結構
自編碼網絡(autoencoder network,AN)是一種三層神經網絡模型,圖1為自動編碼器的一個簡單模型結構,包含了輸入層、隱藏層、輸出層,是一種無監督的學習算法,可以獲取數據中重要信息。從輸入層到隱藏層的壓縮低維表達過程可以稱作模型的編碼階段(encoder),從隱藏層的壓縮特征映射還原出輸出層的近似原始數據的過程稱為解碼階段(decoder)。
設原始空間數據為Rm×n,m為原始空間中數據實例數,n為每條實例數據的維度,x(i)∈Rn(i=1,2,…,m)其每一個訓練數據x(i)經過編碼器操作(式(1))可得隱藏層的特征表達y(i)。

其中,θ=(W,b)為網絡參數,W為輸入層到隱藏層的權值矩陣,b為偏置向量,σ(x)為激活函數,此處選用Sigmoid 激活函數。然后隱藏層的特征表達經過解碼操作(式(2)),得到重構向量z(i)。

其中,θ′=(W′,b′),W′為隱藏層到輸出層間的權值矩陣,通常取W′=WT。通過無監督貪婪算法調節權值和偏置量使重構誤差最小就可完成單個自編碼的訓練,即對模型參數優化調節實際上是最小化重構誤差(式(3))。

L為代價函數,文獻[13]證明了交叉熵代價函數要優于平方差代價函數,因此本文采用交叉熵代價函數,其表達式為式(4)。

則整個數據集條件下的代價函數為式(5)。

同時為了防止出現過擬合,需要添加一個L2正則化權重衰減項,λ為對應的懲罰因子,控制懲罰項從而促進權重的衰減,則改進后的代價函數為式(6)。
稀疏自編碼網絡(sparse autoencoder network,SAN)是Bengio于2007年提出,它是在自編碼器基礎上添加約束條件,要求大部分節點為零,少部分不為零,用盡可能少的神經元表示原始數據從而具有更優學習數據特征的能力[14]。稀疏自動編碼器代價函數為式(7)。

其中,S2是隱藏層中神經元的數量,為稀疏懲罰項,即,β為稀疏懲罰項的權重,ρ∈(0,1)為指定的稀疏性參數,表示神經元的平均激活度,它與權重和偏置量有關,想讓隱藏層神經元j盡量為0,可以讓=ρ,然后讓ρ是一個趨近于0的小數。當=ρ時,達到最小為0;當接近0或者1時,急劇增大。因此在代價函數中加入此項,并使其最小化,可以使得更靠近于ρ。
稀疏降噪自編碼網絡(sparse denoising autoencoder network,SDAN)是在自編碼網絡的基礎上,對各網絡層進行稀疏項限制,同時加入按一定概率分布的噪聲對輸入的數據進行加噪,使稀疏自編碼網絡學習去除這種噪聲,從而提高稀疏自編碼器對數據的泛化能力,提高模型的魯棒性[15]。Vincent等人[16]認為為了使AN具備魯棒性的特征表達,提出降噪自編碼網絡(DAN)。DAN 與AN 類似,都需要編碼和解碼過程來重構數據,同屬于無監督學習。不同的是,降噪自編碼器是在原始數據x上加入一定比例的噪聲變成了噪聲數據x′,然后將噪聲數據作為網絡的輸入數據,來重構原始還未加入噪聲的數據,因此降噪自編碼的損失函數是構造原始數據x與網絡輸出x′之間的一個差異性度量,然后訓練恢復原始數據,使網絡具有抗噪能力,最終還原出更具魯棒性的特征,提高了基本AN對輸入數據的泛化能力。稀疏降噪自編碼器結構如圖2所示,設訓練樣本x,樣本空間x∈Rd,SDAN 通過一個隨機映射變換進而得到一個含有噪聲污染的數據D為數據集,則DAN 的編碼輸出為,接著通過z=解碼器將y反向變化,得到原始輸入數據x的重構數據z,y∈Rh,z∈Rd。通常,加噪的方法有兩種:一種是添加高斯噪聲;另一種是以二項分布隨機處理數據,將數據以一定概率置0。稀疏降噪自編碼網絡代價函數為:

Fig.2 Structure of SDAN圖2 稀疏降噪自編碼網絡結構

堆棧式稀疏降噪自編碼網絡(sSDAN)是由多個SDAN 堆疊而成。神經網絡經過多層的非線性表達能夠學習輸入數據更深層次有效的特征,且對每個SDAN 加入一定比例的噪聲ρ能夠學習更強健的特征表達。在訓練時,將第1個SDAN網絡的隱藏層的輸出作為第2個SDAN網絡隱藏層的輸入,并丟棄第1個SDAN網絡的隱藏層到輸出層的映射部分,從而構建sSDAN 網絡的第2隱藏層,依次類推逐層進行訓練。首先,用經過加噪處理的原始輸入數據訓練第1個稀疏降噪自編碼器,得到輸入數據的1階特征表示然后,將該特征表示作為下一個稀疏降噪自編碼器的輸入,得到2階特征表示依次類推,將第(n-1)階特征表示作為第n個稀疏降噪自編碼器的輸入,得到n階特征的表示sSDAN的學習分為無監督逐層貪婪的預訓練與有監督的微調。當模型在逐層預訓練過程時,訓練每一層SDAN的輸入數據為加入一定比例噪聲ρ的數據信息,在微調過程中使用未加噪聲的原始數據對整個SDAN 網絡進行微調。圖3呈現了預訓練的過程,圖4呈現反向微調的過程。其中sSDAN的數目作為模型的一個重要參數,將在下章節討論如何確定。
模型學習的具體過程如下:
(1)無監督預訓練
步驟1首先采用稀疏自編碼網絡先訓練從輸入層到h(1)層的參數,需要用原始輸入數據x訓練第一個SDAN,它能夠學習得到原始輸入的一階特征表示將無標簽的JavaScript 向量數據加入一定的比例的噪聲ρ,生成樣本數據作為第一個SDAN的數據,利用DAN 的重構方式,訓練得到隱藏層h(1)的權重參數W1,同時計算出隱藏層h(1)的輸出。訓練完畢后,去除解碼層,只留下從輸入層到隱藏層的編碼階段。

Fig.3 Unsupervised pre-training圖3 無監督預訓練

Fig.4 Supervised fine-tuning圖4 有監督的微調
步驟2將步驟1的輸出加入相同比例的噪聲ρ,從而得到,作為第二個SDAN的輸入,用相同的方式訓練得到隱藏層h(2)的權重參數W2,同時計算出隱藏層h(2)的輸出。訓練完畢后,再去除h(2)層的解碼層,如此重復,可以訓練更高層的網絡,這就是逐層貪婪訓練的思想。
步驟3同樣的方法將上一層數據加入相同比例的噪聲ρ,作為第n個SDAN 的輸入,訓練得到隱藏層h(n)的權重參數Wn,并計算隱藏層h(n)的輸出。
步驟4將步驟3隱藏層的輸出作為Softmax 分類器的輸入,得到分類器的參數。
步驟5將步驟1~步驟4逐層訓練得到的網絡參數作為網絡的初始參數,完成模型預訓練。
(2)有監督微調
微調是采用少量標簽數據進行有監督訓練,與此同時對全局網絡訓練中的誤差進行優化,微調的作用是對整個sSDAN+Softmax 網絡的權重進行調優,使模型具有更精準的特征提取和學習能力。微調算法具體過程如下:
步驟1使用標簽的數據作為輸入數據,對sSDAN+Softmax 進行全局訓練,計算整個網絡的損失函數,以及對每個參數的偏導函數。
步驟2采用誤差反向傳播算法并運用隨機梯度下降對網絡權值進行優化,過程是輸入標簽化的數據從前至后逐層計算輸出Y值,計算輸出層誤差,誤差反向傳播,計算每層誤差和梯度,將這些參數作為sSDAN+Softmax整個網絡的最優參數。
本文實驗環境是CPU Intel Core i5-7300HQ 2.50 GHz、GPU GeForce CTX1050 Ti、8 GB RAM 和Windows10操作系統,使用Python3.6下Keras框架實現。

Fig.5 JavaScript malicious code detection model based on sSDAN圖5 基于sSDAN的JavaScript惡意代碼檢測模型
為了提取更加抽象和有用的特征信息,本文提出的基于sSDAN 的JavaScript 惡意代碼檢測模型完整過程如圖5所示。其中網絡由1個輸入層,4個隱藏層和1個Softmax 層組成。該檢測框架首先是數據預處理階段,將字符型JavaScript 代碼轉為數值型數據矢量X=(x1,x2,…,xn)T。然后將數據歸一化到[0,1]區間作為輸入。其次是sSDAN 網絡特征抽取階段,主要分為兩步:一是預訓練,采用逐層貪婪算法對每個SDAN網絡初始化訓練,將前一個SDAN的輸出作為下一個的輸入,然后在頂端加入Softmax 分類器;二是權值微調,在每個單獨的SDAN 訓練完成后,為保障整體權值的最優,需要進行整體權值的微調,使用誤差反向傳播分類算法進行全局精調。這樣網絡前面的隱藏層完成特征的提取,Softmax 完成最終的分類檢測。
本文的數據包括惡意的JavaScript代碼樣本和安全的JavaScript 代碼樣本。一方面來源于文獻[7]開源的數據集;一方面對Alexa’s Top 排名靠前的網站爬取,得到安全的JavaScript 代碼樣本,從PhishTank公布的網站中使用Python Scrapy獲取惡意的URL站點,并利用Google Safe Browsing API進行站點篩選,得到惡意代碼樣本。實驗中,最終獲得21 000個良性JavaScript腳本和7 068個惡意JavaScript腳本。將數據集的90%作為訓練集,10%作為測試集,數據集樣本大小如表1所示。

Table 1 Data set size表1 數據集樣本大小
在自然語言處理中使用表示文本形式的詞向量更為常見,但由于惡意JavaScript代碼具有混淆特征,其中包含了大量無意義的字符串,因此惡意JavaScript代碼的檢測不適用于詞向量形式[11]。由于JavaScript代碼為字符型數據,要進行的預處理操作過程如下:
(1)數值化
依據ASCII 表將JavaScript 代碼中的字符轉為8位二進制數值型數據,然后以二進制文件形式保存。圖6顯示了JavaScript 的兩個代碼片段,圖6(a)cklogin()函數對用戶的登錄進行檢查,獲取用戶的cookie 信息并進行判斷;惡意的JavaScript 代碼由一些無意義的字符串組成,如圖6(b)所示,通常使用Unicode、Hex、Decimal 和字符分割等手段將代碼轉變為人眼無法清晰可見的字符;因為空間有限,只轉換了圖6(a)和圖6(b)的部分代碼如圖6(c)所示。

Fig.6 Data processing example圖6 數據處理示例
(2)歸一化
進行數值化處理之后,數據集中的數據轉換為數值型數據,但數值型數據中數值差異較大,取值范圍為0~255之間,數值差異較大容易引起網絡收斂較慢和神經元輸出飽和等問題,因此要對原始數據進行歸一化處理。文中使用最大-最小歸一化方法將數據集中的數據歸一化到[0,1]區間之內,其公式為:

其中,x*為歸一化后的數據,x為當前原始數據,xmin為當前屬性中最小的數據值,xmax為當前屬性中的最大數據值。
在堆棧式稀疏降噪自編碼學習過程中,網絡參數的設置會對網絡性能存在較大影響,因此,本文首先從網絡層數和噪聲系數大小探討參數對網絡性能的影響。
(1)網絡層數
在選取過程中存在較大的主觀性,沒有統一的標準和要求,因此為了對比不同網絡深度對整體分類性能的影響,本實驗將網絡層數分別設置2~6層進行對比。其中輸入維度是1 000維,輸出為50維,每個隱藏層節點設置為250,學習率0.01,將網絡層從2變化至6,識別率如表2所示,30次誤差迭代曲線圖如圖7所示。

Table 2 sSDAN training of different structures表2 不同結構的sSDAN訓練

Fig.7 Local magnification of training loss function圖7 局部訓練損失函數放大圖
從表2可以看出,當網絡層數從2增加到4時,網絡識別率呈現增長趨勢,這是由于增加降噪編碼層可以提高網絡的學習性能,使得更高層次可以學習到更具有代表性的特征,當網絡為4層時,識別率可達99.2%,但是當網絡層數繼續增大,識別率反而下降。從圖7可以看出,網絡層數小于4層時,網絡收斂速度慢,當網絡層次大于4時,網絡誤差震蕩較大,這是因為網絡過大時增加了網絡的復雜度,導致網絡不穩定,泛化性降低,容易出現過擬合。較淺或較深都會使誤差增大。通常隨著網絡深度的增加,SDAN 的概括抽象能力也會增強。淺層的SDAN 網絡由于網絡層次較淺,導致概括抽象能力較差,容易損失較多的原始信息,從而使得訓練誤差較大;太過于深層的SDAN網絡,隨著深度的增加會導致抽取的信息過于抽象,使得原始數據的細節信息丟失,也會使訓練誤差增加。因而,本文選用具有4層結構的SDAN進行數據降維。
(2)噪聲率
噪聲率是控制降噪自編碼網絡中將輸入隨機隱藏為零的部分,即決定降噪自編碼網絡要通過多少節點對輸入數據進行重構。如果噪聲率為0.6,選擇將輸入數據的60%隨機隱藏,用40%的節點對數據進行重構。在實際應用中隱藏輸入的部分一般都要低于0.5,因此本實驗中噪聲系數率取最大為0.6,迭代次數100,學習率0.01。從圖8可以看出,隨噪聲率的增加,識別率呈增長趨勢。當噪聲為0時,網絡為傳統的自編碼神經網絡,加入噪聲后的網絡性能明顯優于傳統自編碼神經網絡,當噪聲系數為0.4時,可以從“被污染”的輸入中學習到更魯棒性的特征。

Fig.8 Experimental results of different noise coefficients圖8 不同噪聲系數值實驗結果
圖9給出了稀疏參數ρ與第一層自編碼網絡重構誤差的關系。可以看出選擇0.08的稀疏參數時的自編碼網絡的重構誤差最小,加入0.4的隨機噪聲使得學習到的特征更具有魯棒性,學習率為0.001,神經元激活函數為Relu。

Fig.9 Reconstruction error圖9 重構誤差
在進行最終實驗測試時,網絡層數設定為4層,網絡結構設置為1 000-500-250-125-50-2,首先要進行參數調優。目前對于參數調優并沒有統一標準,大多數根據實驗條件而定并通過對比分析參數的優劣,反復實驗進行調優,最終確定的參數如表3所示。

Table 3 Parameter setting of sSDAN表3 sSDAN參數設置
隨后,將經過sSDAN降維后的數據作為Softmax神經網絡的輸入進行訓練和預測。訓練集和驗證集的準確率和損失函數曲線分別如圖10和圖11所示,其中acc代表訓練集的準確率,val_acc表示驗證集的準確率,loss 和val_loss 分別代表訓練集和驗證集的損失函數曲線。從兩組圖像可知,檢測曲線呈現穩定上升的趨勢且訓練準確率較高,代價函數值呈現穩定下降的趨勢且訓練誤差較低,表明神經網絡具有良好的訓練效果。因此,本文選擇1 000-500-250-125-50-2結構的sSDAN-softmax模型作為實驗模型。

Fig.10 Accuracy curve圖10 準確率曲線

Fig.11 Loss function curve圖11 損失函數曲線
本文定義惡意的JavaScript 代碼樣本為負樣本,正常的JavaScript 代碼為正樣本,由此得到分類器列表,詳見表4。

Table 4 Evaluation index confusion matrix表4 評價指標混淆矩陣
研究中,將通過準確率和誤報率來評估檢測性能,對其內容分述如下。
(1)準確率(Accuracy)。被正確檢測出的樣本數/測試集所有樣本數,公式為:

(2)誤報率(false positive rate,FPR)。錯誤分類為惡意的JavaScript良性代碼所占比例的公式為:

為了從不同角度考察本文所提方法的有效性,本文設計3組不同的實驗:(1)AN、DAN 和SDAN 在不同訓練數據情況下的精確度變化;(2)sSDANsoftmax、sSDAN-LR 和sSDAN-SVM 的分類效果對比;(3)sSDAN-Softmax 與傳統機器學習算法效果的對比,主要是對手工特征分類和自動提取特征方法進行對比,分別從CCR(correctly classified rate)、ICR(incorrectly classified rate)、TPR(true positive rate)和FPR進行比較。
將沒有添加噪聲的AE 與加了噪聲的DAE(denoising autoencoder)和加了稀疏限制的SDAE(sparse denoising autoencoder)對不同訓練數據進行訓練,結果如圖12。可以看出在不同訓練數據下SDAE的精確度效果都要優于AE和DAE的。

Fig.12 Accuracy comparison of AE/DAE/SDAE under different training data sizes圖12 不同訓練數據下AE/DAE/SDAE的精確度對比
為了驗證Softmax 的分類效果,增加LR 和SVM作為分類進行對比,即將所提的sSDAN-Softmax、sSDAN-LR 和sSDAN-SVM 模型進行分析和比較。隱藏層都設置為4層,噪聲和學習率參數都設置一樣,每訓練10次取平均值作為一次輸出,實驗結果如圖13所示,可以看出Softmax 的分類效果要高于LR和SVM。

Fig.13 Comparison of effects of different sSDAN classifiers圖13 不同sSDAN分類器效果比較
選擇機器學習算法平臺WEKA 中的7種機器學習分類算法對代碼樣本進行訓練和分類。采用十折交叉驗證(10-fold cross-validation)方法,將數據集分成10份,輪流將其中9份作為訓練數據,1份作為測試數據,進行實驗。將10次的結果數據的平均值作為實驗結果,機器學習和sSDAN模型實驗結果如表5所示。

Table 5 Comparison between machine learning classification algorithm and sSDAN model表5 機器學習分類算法與sSDAN模型的對比
從表5中可以看出,機器學習方法算法分類中,Na?ve Bayes 的效果最差,識別準確率僅為79.939%,錯誤率為20.061%;效果最好的是Random Forest,識別準確率為98.784%,錯誤率1.216%;但所提出的sSDAN 識別準確率達到99.501%,錯誤率僅為0.198%。可以得知使用無監督學習的sSDAN對惡意代碼的檢測要優于其他傳統機器學習檢測模型。
本文針對機器學習在人工提取惡意代碼特征過程中耗時且檢測準確率過于依賴特征選擇的問題,提出一種基于堆棧式稀疏降噪自編碼網絡的JavaScript惡意代碼檢測方法。堆棧式稀疏降噪自編碼網絡是一種深層神經網絡結構,通過隱藏層逐層抽取有效的信息,可以很好地進行特征降維和去除冗余特征。文中提出的sSDAN-Softmax檢測模型綜合使用了稀疏自編碼網絡和降噪自編碼網絡,有效提高了網絡的泛化能力和降維特征的魯棒性。實驗結果表明,將JavaScript 代碼轉為數值型矢量作為堆棧式稀疏降噪自編碼網絡的輸入,再使用sSDAN 對高維數據進行高維至低維的非線性映射,自動提取惡意代碼的抽象特征,最后對低維數據進行神經網絡訓練和預測,相比于傳統的機器學習算法,sSDANSoftmax 對JavaScript 惡意代碼的檢測依然有較高的準確率,并且誤報率也有所下降。因此,sSDANSoftmax 檢測模型不僅提高了惡意代碼檢測預測準確率,且加快了檢測的速度,是一種適用于當前高維、復雜多變惡意代碼的方法,可以為當前的惡意代碼檢測研究提供一種新的思路。