葉 菁,黃慶佳
(1. 中國科學(xué)院信息工程研究所,北京 100195;2. 中國科學(xué)院大學(xué),北京 100190)
一種基于內(nèi)核級(jí)監(jiān)測的惡意軟件聚類分析方法
葉 菁1,2,黃慶佳1
(1. 中國科學(xué)院信息工程研究所,北京 100195;2. 中國科學(xué)院大學(xué),北京 100190)
惡意軟件分析技術(shù)的研究一直都是安全研究的重點(diǎn)之一。近年來,基于機(jī)器學(xué)習(xí)和數(shù)據(jù)挖掘算法的惡意軟件行為特征的分析方法逐漸受到研究人員的重視。但目前這類方法普遍基于用戶態(tài)行為進(jìn)行分析。針對(duì)用戶態(tài)監(jiān)測所處層級(jí)高、容易造成獲取行為不完整等問題,本文提出一種基于內(nèi)核級(jí)監(jiān)測的惡意軟件聚類方法,在內(nèi)核中監(jiān)測獲取惡意軟件內(nèi)核函數(shù)調(diào)用序列,提取內(nèi)核行為表示成內(nèi)核行為表示模型,并采用層次聚類算法對(duì)內(nèi)核行為序列進(jìn)行聚類分析。通過實(shí)驗(yàn),驗(yàn)證了本文的分析方法能夠獲取較好的分析結(jié)果。
計(jì)算機(jī)軟件與理論;惡意軟件聚類分析;行為分析;內(nèi)核
隨著計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)的迅速發(fā)展及在人們工作生活中的廣泛應(yīng)用,互聯(lián)網(wǎng)環(huán)境下數(shù)量龐大的惡意軟件已成為危害社會(huì)的正常運(yùn)行和人們的隱私安全的重要威脅。對(duì)惡意軟件分析技術(shù)的研究一直都是安全研究的熱門之一。近年來在惡意軟件分析研究領(lǐng)域,運(yùn)用機(jī)器學(xué)習(xí)和數(shù)據(jù)挖掘算法分析惡意軟件運(yùn)行時(shí)行為特征的方法越來越受到安全研究人員的重視。這類分析方法具有對(duì)抗惡意軟件混淆技術(shù)的特性和進(jìn)行關(guān)聯(lián)性分析的能力。目前的這類分析方法普遍基于用戶態(tài)監(jiān)測獲取的惡意軟件行為進(jìn)行分析,而用戶態(tài)的監(jiān)測技術(shù)所處系統(tǒng)層級(jí)較高,當(dāng)惡意軟件有低層級(jí)行為,如加載驅(qū)動(dòng)、調(diào)用內(nèi)核函數(shù)等時(shí),監(jiān)測程序無法捕獲其行為,造成行為日志缺失,從而影響分析的準(zhǔn)確度。
針對(duì)這一問題,本文提出基于內(nèi)核級(jí)監(jiān)測的惡意軟件聚類分析方法,設(shè)計(jì)并實(shí)現(xiàn)了一個(gè)自動(dòng)分析系統(tǒng),包括一個(gè)內(nèi)核沙箱和一個(gè)分析框架,用于自動(dòng)化執(zhí)行惡意軟件獲取惡意軟件內(nèi)核函數(shù)序列,根據(jù)內(nèi)核函數(shù)序列提取內(nèi)核行為,并基于獲取的內(nèi)核行為進(jìn)行聚類分析。
基于機(jī)器學(xué)習(xí)和數(shù)據(jù)挖掘算法分析惡意軟件行為的方法按其分析過程分為惡意軟件行為獲取和行為分析算法兩部分。
1.1 惡意軟件行為獲取
在惡意軟件行為獲取過程中,通過動(dòng)態(tài)分析技術(shù),在受控環(huán)境中監(jiān)測獲取惡意軟件運(yùn)行時(shí)行為,作為行為分析算法的輸入。目前研究人員主要使用開源沙箱工具獲取惡意軟件行為。
TTAnalyze[1]采用Qemu模擬器作為虛擬化環(huán)境,通過CR3寄存器實(shí)現(xiàn)對(duì)目標(biāo)進(jìn)程的監(jiān)測,跟蹤惡意軟件對(duì)Windows API和Native API的調(diào)用。CWSandbox[2]采用VMware虛擬化環(huán)境,通過Inline Hook技術(shù),Hook了總共120余Windows API和Native API,實(shí)現(xiàn)對(duì)惡意軟件的監(jiān)測。Cuckoo Sandbox[3],一個(gè)始于HoneyNT的開源項(xiàng)目,其支持多虛擬化平臺(tái),采用基于進(jìn)程注入的API Hook技術(shù)Hook了180余Windows API和Native API。除上述較常使用的沙箱工具外,其他動(dòng)態(tài)分析工具還有如PyBox[4]、ZeroWine[5]、TWMAN[6]、Capture[7]等。動(dòng)態(tài)分析工具相關(guān)信息匯總?cè)绫?所示。
表1 沙箱工具信息匯總Tab.1 Sandbox Tools
1.2 行為分析算法
為了實(shí)現(xiàn)對(duì)海量數(shù)據(jù)的分析處理及利用,國內(nèi)外很多學(xué)者對(duì)機(jī)器學(xué)習(xí)和數(shù)據(jù)挖掘算法及其應(yīng)用[8-12]進(jìn)行了廣泛研究。行為分析算法,基于機(jī)器學(xué)習(xí)和數(shù)據(jù)挖掘算法實(shí)現(xiàn),以動(dòng)態(tài)分析工具獲取的惡意軟件行為集合作為輸入,運(yùn)用各種特征模型進(jìn)行特征提取,并基于提取的特征進(jìn)行分類聚類分析。
Rieck等人[13]基于CWSandbox獲取的惡意軟件行為數(shù)據(jù),利用向量空間模型和背包模型提起分類特征,并利用支持向量機(jī)SVM訓(xùn)練分類器進(jìn)行分類分析。Bayer等人[14]基于TTAnalyze獲取的資源對(duì)象操作的形式的惡意軟件行為數(shù)據(jù),采用局部敏感哈希算法提取特征,并通過分層聚類算法進(jìn)行聚類分析。Rieck、Trinius等人[15]基于CWSandbox獲取的惡意軟件數(shù)據(jù),將行為表示成MIST[16]編碼的形式,通過n-gram模型將行為序列向量化,并采用分層聚類算法和KNN分類算法進(jìn)行分析。其他研究也都是通過改進(jìn)特征提取過程和分析算法過程獲取更好的分析結(jié)果。
目前行為分析算法的輸入為動(dòng)分析工具主要是開源沙箱工具獲取的惡意軟件行為,而基于用戶態(tài)監(jiān)測實(shí)現(xiàn)的開源沙箱工具面對(duì)惡意軟件的內(nèi)核行為時(shí),其獲取的惡意軟件行為將不完整,從而影響分析的準(zhǔn)確度。
2.1 系統(tǒng)架構(gòu)與設(shè)計(jì)
分析系統(tǒng)整體架構(gòu)如圖1所示,分為動(dòng)態(tài)分析和行為分析兩部分。
圖1 分析系統(tǒng)架構(gòu)Fig.1 Analysis Framework
2.2 動(dòng)態(tài)分析框架
動(dòng)態(tài)分析框架實(shí)現(xiàn)了對(duì)惡意軟件的自動(dòng)化深度監(jiān)測,獲取惡意軟件內(nèi)核函數(shù)調(diào)用序列。動(dòng)態(tài)分析框架中,設(shè)計(jì)并實(shí)現(xiàn)了一個(gè)內(nèi)核監(jiān)控器程序,并在內(nèi)核監(jiān)控器程序的基礎(chǔ)上,設(shè)計(jì)擴(kuò)展實(shí)現(xiàn)了一個(gè)基于內(nèi)核深度監(jiān)測的沙箱系統(tǒng)(簡稱內(nèi)核沙箱系統(tǒng))。
2.2.1 內(nèi)核監(jiān)控器實(shí)現(xiàn)
內(nèi)核監(jiān)控器采用驅(qū)動(dòng)程序的形式,基于Hook系統(tǒng)服務(wù)、Hook IRP和系統(tǒng)回調(diào)等多種監(jiān)測技術(shù)實(shí)現(xiàn)。其包括進(jìn)程線程、注冊(cè)表、文件系統(tǒng)、網(wǎng)絡(luò)行為和系統(tǒng)服務(wù)五個(gè)監(jiān)測子模塊。
圖2 內(nèi)核監(jiān)控器層次圖Fig.2 Hierarchical Structure of Kernel Monitor
● 進(jìn)程線程監(jiān)測子模塊,通過注冊(cè)進(jìn)程、線程、鏡像回調(diào)函數(shù),捕獲進(jìn)程線程創(chuàng)建刪除,鏡像文件加載等操作。
● 注冊(cè)表監(jiān)測子模塊,通過注冊(cè)回調(diào)函數(shù)監(jiān)測系統(tǒng)注冊(cè)表狀態(tài)的改變,捕獲系統(tǒng)中的注冊(cè)表操作。
● 文件系統(tǒng)監(jiān)測子模塊,通過文件微過濾驅(qū)動(dòng)的方式,向過濾管理器注冊(cè)過濾操作和回調(diào)函數(shù)。捕獲系統(tǒng)中的指定的文件操作事件。
● 網(wǎng)絡(luò)監(jiān)測子模塊,通過TDI過濾驅(qū)動(dòng)的方式,實(shí)現(xiàn)IRP包過濾功能,解析獲取系統(tǒng)中網(wǎng)絡(luò)操作的信息。
● 系統(tǒng)服務(wù)監(jiān)測模塊,通過Hook系統(tǒng)服務(wù)派遣表的方式,實(shí)現(xiàn)截獲系統(tǒng)服務(wù)函數(shù)的調(diào)用事件。
2.2.2 內(nèi)核沙箱系統(tǒng)實(shí)現(xiàn)
內(nèi)核沙箱基于Cuckoo開源框架和內(nèi)核監(jiān)控器程序擴(kuò)展實(shí)現(xiàn),能夠在內(nèi)核層中自動(dòng)化監(jiān)測獲取惡意軟件行為。Cuckoo為基于虛擬機(jī)和Python自動(dòng)化技術(shù)實(shí)現(xiàn)的開源框架,擁有并行化分析能力,其提供了可擴(kuò)展的Analyzer Package分析包。通過在Package抽象類的基礎(chǔ)上擴(kuò)展實(shí)現(xiàn)Kernel子類,添加內(nèi)核監(jiān)控器和監(jiān)測控制程序,實(shí)現(xiàn)內(nèi)核分析功能。
內(nèi)核沙箱分析流程的偽碼如下所示:
內(nèi)核沙箱單次分析流程的偽碼如下所示:
2.3 行為分析框架
行為分析框架對(duì)動(dòng)態(tài)分析框架獲取的惡意軟件函數(shù)調(diào)用序列集進(jìn)行分析,提取行為特征,進(jìn)行聚類分析。
2.3.1 內(nèi)核行為提取
對(duì)惡意軟件行為進(jìn)行聚類分析時(shí),分析算法需能明確區(qū)分作為輸入的惡意軟件行為。用戶態(tài)函數(shù)語義固定明確易于區(qū)分其具體行為。而內(nèi)核函數(shù)語義凝聚,相同內(nèi)核函數(shù)可能對(duì)應(yīng)不同的行為,同一行為也可能由不同內(nèi)核函數(shù)實(shí)現(xiàn)。因此,要基于內(nèi)核函數(shù)序列做聚類分析,必須先從語義凝聚的內(nèi)核函數(shù)序列中提取其具體的內(nèi)核行為。
相同內(nèi)核函數(shù)可能對(duì)應(yīng)不同的行為,如內(nèi)核函數(shù)ZwDeviceIoControlFile對(duì)應(yīng)到用戶模式下的各類Socket操作。在內(nèi)核函數(shù)實(shí)現(xiàn)中,操作系統(tǒng)通過比較函數(shù)參數(shù)與預(yù)置的固定值可判斷具體的操作類型。同一行為可以由不同內(nèi)核函數(shù)實(shí)現(xiàn),如文件刪除行為可由多個(gè)不同的內(nèi)核函數(shù)實(shí)現(xiàn)。對(duì)于這類內(nèi)核函數(shù),在區(qū)分出內(nèi)核函數(shù)具體行為的基礎(chǔ)上,將進(jìn)行相同類型的操作的不同內(nèi)核函數(shù)的行為會(huì)聚標(biāo)記為同一行為。
基于此思路,采用逆向工程的方式,逆向、調(diào)試操作系統(tǒng)系統(tǒng)服務(wù)函數(shù)的實(shí)現(xiàn),依據(jù)操作系統(tǒng)內(nèi)核函數(shù)的實(shí)現(xiàn)的方式,并參考WDK文檔,設(shè)計(jì)了內(nèi)核函數(shù)行為映射表,以內(nèi)核函數(shù)名和函數(shù)調(diào)用重要參數(shù)為輸入,提取其具體的內(nèi)核行為。
例如提取系統(tǒng)服務(wù)函數(shù)ZwDeviceIoControlFile代表的行為:
IO控制碼為系統(tǒng)預(yù)置或驅(qū)動(dòng)程序使用CTL_ CODE宏定義的。函數(shù)通過判斷IO控制碼,通知驅(qū)動(dòng)設(shè)備進(jìn)行指定的操作。當(dāng)IO控制碼為系統(tǒng)預(yù)置時(shí),如此處通過f(ZwDeviceIoControlFile, IoControlCode|73735),將IoControlCode同操作系統(tǒng)預(yù)定義的IO控制碼比較,得出其對(duì)應(yīng)操作為一個(gè)Socket connect操作。而當(dāng)IO控制碼為自定義的時(shí),自定義的IO控制碼能夠表征其具體行為類型,通過函數(shù)名+IoControlCode+設(shè)備對(duì)象名,可表示這個(gè)設(shè)備對(duì)象自己定義的操作。
內(nèi)核行為提取過程,將語義凝聚模糊的內(nèi)核函數(shù)調(diào)用轉(zhuǎn)換成語義離散明確的內(nèi)核行為表示,獲取適于聚類分析的內(nèi)核行為。
2.3.2 內(nèi)核行為模型
提取的內(nèi)核行為以進(jìn)程樹的形式按時(shí)序存儲(chǔ)在文本中。針對(duì)聚類算法處理以文本、XML等形式存儲(chǔ)的用戶模式行為序列較困難,及日志信息冗余度較高等問題,Trinius等人設(shè)計(jì)了按參數(shù)特異性分層的MIST編碼。在MIST編碼中,相同家族的樣本,參數(shù)層級(jí)越低參數(shù)越具相似性。此設(shè)計(jì)能實(shí)現(xiàn)降低冗余度,提供不同粒度的聚類層次等功能。然而,MIST的 Level3及以上的層次中,參數(shù)實(shí)際上不具有相似性。Rieck、Trinius在其分類聚類實(shí)驗(yàn)中也僅使用了前兩級(jí)參數(shù)。
相比于用戶模式行為序列,同一樣本的內(nèi)核行為序列長度一般更長,處理復(fù)雜度更大。因此要對(duì)內(nèi)核行為做聚類分析,更需要篩去行為日志中的冗余信息。因此參考MIST編碼,本文設(shè)計(jì)了編碼表示的內(nèi)核行為模型KIST。
圖3 KIST模型Fig.3 KIST Model
KIST模型,將單條日志分為BEHAVIOR、ARGBLOCK、TARGET、HANDLE四部分。BEHAVIOR部分用于表征一次API調(diào)用的具體行為。ARGBLOCK部分記錄重要參數(shù),即對(duì)同一家族惡意軟件可能相同的參數(shù)。TARGET和HANDLE為可選項(xiàng)。TARGET表征行為作用的對(duì)象,HANDLE記錄行為相關(guān)句柄,二者共同表征行為操作作用的對(duì)象。
KIST模型表示如下:
0f 01 | 00006b2c 0c7d3f9c | 000d4000
BEHAVIOR部分,0f為鏡像加載回掉所屬的類目范圍,01為具體的操作。
ARGBLOCK部分,00006b2c表示的是加載的鏡像的類型,通過解析FullImageName獲取,此處為DLL,0c7d3f9c為加載的鏡像所在的目錄。對(duì)同一惡意代碼及其變種,如果在運(yùn)行過程中需加載某個(gè)動(dòng)態(tài)鏈接庫,鏡像加載行為不變的首先是加載的鏡像的類型,其次是鏡像所處的系統(tǒng)路徑。
TARGET部分表征鏡像加載操作作用的對(duì)象,由于鏡像名可能因惡意軟件隨機(jī)命名而改變,故選擇加載鏡像的大小表征所加載的鏡像。
2.3.3 聚類分析
聚類分析分三步,分別對(duì)惡意軟件行為序列做復(fù)雜度降低、序列映射和聚類。
內(nèi)核行為序列中會(huì)出現(xiàn)大量的重復(fù)行為。例如,同樣從文件中讀取256比特的行為,可以一次讀取256比特,也可分256次每次讀取1比特。這些重復(fù)行為會(huì)對(duì)分析精度和分析性能造成影響。參考內(nèi)核函數(shù)使用規(guī)律和KIST模型的TARGET和HANDLE塊,可將屬于同一個(gè)操作的多個(gè)行為合并。
行為序列映射,將代表惡意軟件的行為序列映射到多維向量空間,通過多維空間上的距離計(jì)算惡意軟件相似性。自然語言處理研究領(lǐng)域提供里很多文本向量化的模型及算法,本文中選用一個(gè)基于n-gram模型和TF-IDF的算法,用于將行為序列向量化并計(jì)算行為序列間空間上距離。
聚類過程,依據(jù)行為序列空間上距離作為相似性比較的依據(jù)。運(yùn)用層次聚類算法對(duì)惡意軟件進(jìn)行聚類分析。本文選用一個(gè)簡單的層次聚類算法。其中數(shù)據(jù)點(diǎn)集合間的距離計(jì)算使用complete linkage算法。
3.1 實(shí)驗(yàn)樣本
實(shí)驗(yàn)選取了來自VirusShare[17]上的3163個(gè)樣本,通過VirusTotal[18]在線掃描后,選取卡巴斯基的掃描結(jié)果為標(biāo)簽。如表2所示。
表2 實(shí)驗(yàn)樣本Tab.2 Experimental Samples
3.2 實(shí)驗(yàn)環(huán)境
分析主機(jī)為一臺(tái)聯(lián)想一體機(jī),內(nèi)存為8 G,操作系統(tǒng)為Ubuntu 14.04。分析系統(tǒng)部署在一體機(jī)上,使用VirtualBox虛擬機(jī)中的Windows XP系統(tǒng)。虛擬機(jī)中安裝了部分常用軟件,如Office,F(xiàn)lash,Adobe Reader,QQ等,并預(yù)置部分文檔,模擬真實(shí)計(jì)算機(jī)環(huán)境。
3.3 對(duì)比實(shí)驗(yàn)
對(duì)照組選用Rieck、Trinius等人提出的分析框架作為對(duì)比。該分析框架用于對(duì)惡意軟件用戶模式行為進(jìn)行聚類分類分析。對(duì)照組系統(tǒng)架構(gòu)如圖4所示。
圖4 對(duì)照組系統(tǒng)架構(gòu)Fig.4 Contrast Experimental Framework
3.4 結(jié)果分析
為了客觀衡量聚類分析的結(jié)果,本文選用準(zhǔn)確率,召回率和F值三個(gè)標(biāo)準(zhǔn)。假設(shè)分析的總樣本數(shù)為n,原始樣本家族為Y,聚類結(jié)果簇為C。分別定義準(zhǔn)確率P,召回率R和F-measure值F如下:
Maxc為一個(gè)聚類結(jié)果簇c中,包含最大的樣本類中樣本的數(shù)目。Maxy為所有聚類結(jié)果簇中,單個(gè)結(jié)果簇中包含標(biāo)簽為y的樣本的最大數(shù)目。
對(duì)比實(shí)驗(yàn)中,實(shí)驗(yàn)組和對(duì)照組分析系統(tǒng)分別對(duì)樣本數(shù)據(jù)集進(jìn)行聚類分析,分析結(jié)果如表4所示。由實(shí)驗(yàn)數(shù)據(jù)可知,基于內(nèi)核行為分析的實(shí)驗(yàn)組,獲取更高的F值,且聚類結(jié)果更緊密。由此可見,本文基于內(nèi)核行為的分析方法能夠獲取較好的分析結(jié)果。
表4 實(shí)驗(yàn)結(jié)果Tab.4 Experimental Result
[1] Bayer U, Kruegel C, Kirda E. TTAnalyze: A tool for analyzing malware[M]. na, 2006.
[2] Willems C, Holz T, Freiling F. Toward automated dynamic malware analysis using cwsandbox[J]. IEEE Security & Privacy, 2007, 5(2).
[3] Guarnieri C, Tanasi A, Bremer J, et al. The Cuckoo Sandbox (2012)[J].
[4] Engelberth M, G?bel J, Sch?nbein C, et al. PyBox-A Python Sandbox[C]//Sicherheit. 2012: 137-148.
[5] Koret J. Zero Wine Malware Analysis Tool[J]. 2013.
[6] Huang H D, Lee C S, Kao H Y, et al. Malware behavioral analysis system: TWMAN[C]//Intelligent Agent (IA), 2011 IEEE Symposium on. IEEE, 2011: 1-8.
[7] Seifert C, Steenson R, Welch I, et al. Capture-A behavioral analysis tool for applications and documents[J]. digital investigation, 2007, 4: 23-30.
[8] 杜淑穎. 基于大型數(shù)據(jù)集的聚類算法研究[J]. 軟件, 2016, 37(01): 132-135
[9] 唐波. 改進(jìn)的K-means聚類算法及應(yīng)用[J]. 軟件, 2012, 33(3): 100-104
[10] 鄭文超, 徐鵬. 利用word2vec 對(duì)中文詞進(jìn)行聚類的研究[J]. 軟件, 2013, 34(12): 160-162
[11] 陳磊磊. 不同距離測度的K-Means 文本聚類研究[J]. 軟件, 2015, 36(1): 56-61
[12] 徐步云, 倪禾.自組織神經(jīng)網(wǎng)絡(luò)和K-means 聚類算法的比較分析[J].新型工業(yè)化, 2014, 4(7): 63-69. XU Buyun, NI He. Comparative analysis of SOM and K-means clustering[J]. The Journal of New Industrialization, 2014, 4(7): 63-65.
[13] Rieck K, Holz T, Willems C, et al. Learning and classification of malware behavior[C]//International Conference on Detection of Intrusions and Malware, and Vulnerability Assessment. Springer Berlin Heidelberg, 2008: 108-125.
[14] Bayer U, Comparetti P M, Hlauschek C, et al. Scalable, Behavior-Based Malware Clustering[C]//NDSS. 2009, 9: 8-11.
[15] Rieck K, Trinius P, Willems C, et al. Automatic analysis of malware behavior using machine learning[J]. Journal of Computer Security, 2011, 19(4): 639-668.
[16] Trinius P, Willems C, Holz T, et al. A malware instruction set for behavior-based analysis[J]. 2009.
[17] VirusShare. ”VirusShare. com-Because Sharing is Caring.”Internet: http://virusshare.com/, Jan. 15, 2017 [Jan. 15, 2017].
[18] VirusTotal. ”virustotal. ” Internet: https: //www. virustotal. com/, 2017 [Jan. 15, 2017].
Indirect Computing Model with Indirect Formal Method
YE Jing1,2, HUANG Qing-jia1
(1. Institute of Information Engineering, Chinese Academy of Sciences, Beijing 100195, China; 2. University of Chinese Academy of Sciences, Beijing 100190)
Malware analysis has been one of the focuses of security research. In recent years, analysis methods of malware behavior using machine learning and data mining algorithms have been paid great attention by researchers. But at present this kind of method is generally based on the behaviors gained by user mode monitoring techniques. User-mode monitoring techniques are at a high system level and may obtain incomplete malware behavior. This paper proposes a malware clustering method based on kernel level monitoring, monitoring malware in the kernel to obtain kernel function call sequences, extracting kernel behaviors, and using hierarchical clustering algorithm to cluster analysis of kernel behavior sequence. The experiment show that this method can get better results.
Computer software and theory; Malware clustering analysis; Behavior analysis; Kernel
TP393.08
A
10.3969/j.issn.1003-6970.2017.05.001
國家863課題(2015AA017202),北京市科委項(xiàng)目(D161100001216001),中科院先導(dǎo)項(xiàng)目(XDA06010703)
葉菁(1992-),男,在讀碩士研究生,計(jì)算機(jī)軟件與理論。
黃慶佳,助理研究員,主要研究方向:網(wǎng)絡(luò)與軟件安全。
本文著錄格式:葉菁,黃慶佳. 一種基于內(nèi)核級(jí)監(jiān)測的惡意軟件聚類分析方法[J]. 軟件,2017,38(5):01-06