亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種基于程序切片技術(shù)的C語(yǔ)言死代碼檢測(cè)方法與流程

文檔序號(hào):11729274閱讀:475來(lái)源:國(guó)知局

本發(fā)明涉及惡意代碼分析領(lǐng)域,主要涉及一種基于程序切片技術(shù)的c語(yǔ)言死代碼檢測(cè)方法。



背景技術(shù):

隨著互聯(lián)網(wǎng)的廣泛普及,現(xiàn)今的計(jì)算機(jī)網(wǎng)絡(luò)也面臨著越來(lái)越多的攻擊威脅。在眾多網(wǎng)絡(luò)安全問(wèn)題中,惡意代碼所造成的安全危害愈發(fā)嚴(yán)重。惡意代碼分析成了安全人士關(guān)注的重點(diǎn),各種惡意代碼分析方法被不斷提出。然而,為了增加安全人員對(duì)惡意代碼進(jìn)行分析的難度,惡意代碼編寫者往往采用各種技術(shù)手段對(duì)代碼進(jìn)行保護(hù),代碼混淆就是其中之一。經(jīng)過(guò)混淆的惡意代碼,既能躲避查殺工具的檢測(cè),又能阻礙逆向工程師進(jìn)行安全分析。

在眾多代碼混淆方法中,控制流代碼混淆方法的使用最為廣泛??刂屏骰煜夹g(shù)通過(guò)各種方法和手段對(duì)程序真正的控制流程進(jìn)行隱藏,從而阻礙反混淆人員的分析。常用的控制混淆方法包括插入死代碼或不相關(guān)代碼、插入不透明謂詞、擴(kuò)展循環(huán)條件、并行化程序等。其中,插入死代碼是指在原始代碼中插入完全不會(huì)被執(zhí)行到的代碼,以阻礙安全人員對(duì)代碼進(jìn)行分析。

國(guó)內(nèi)外學(xué)者采用各種反混淆方法,對(duì)經(jīng)過(guò)混淆的惡意代碼進(jìn)行分析。2013年,郭軍提出了一種基于語(yǔ)義的反混淆方法,通過(guò)語(yǔ)義相關(guān)指令的識(shí)別,對(duì)混淆代碼指令序列進(jìn)行優(yōu)化,實(shí)現(xiàn)二進(jìn)制代碼自動(dòng)反混淆。2015年,宣以廣提出一種基于字符熵的javascript混淆代碼檢測(cè)方法,依據(jù)代碼n-gram熵值大小判定代碼是否經(jīng)過(guò)混淆,有利于分析javascript惡意代碼。2016年,朱澤策提出了面向android安全性的smali混淆代碼分析方法,基于抽象語(yǔ)法樹(shù)相似度,對(duì)原生代碼和混淆代碼進(jìn)行比較,計(jì)算其相似性,為混淆代碼的理解提供幫助。

這些代碼反混淆方法,或是只能對(duì)混淆代碼的分析提供幫助,而不能具體檢測(cè)出被混淆代碼中死代碼的位置,恢復(fù)控制流結(jié)構(gòu),或是需要進(jìn)行語(yǔ)義與指令識(shí)別等復(fù)雜的處理,并不適合在分析惡意代碼時(shí)實(shí)際應(yīng)用。因此,有效、方便的死代碼檢測(cè)方法是需要進(jìn)一步研究。



技術(shù)實(shí)現(xiàn)要素:

本發(fā)明提出一種基于程序切片技術(shù)的c語(yǔ)言死代碼檢測(cè)方法,從可能插入了死代碼的c語(yǔ)言源代碼出發(fā),目的是給出一個(gè)更為有效的c語(yǔ)言死代碼檢測(cè)方法。

程序切片是一種分析和理解程序的技術(shù)。經(jīng)過(guò)不斷發(fā)展,在程序理解、分析以及軟件的測(cè)試、度量等方面都有著廣泛的應(yīng)用。其中,靜態(tài)切片靜態(tài)分析代碼,通過(guò)對(duì)源碼的代替表達(dá)形式進(jìn)行檢查而不必實(shí)際執(zhí)行程序,對(duì)于所有的程序輸入,產(chǎn)生的靜態(tài)切片都是正確的;動(dòng)態(tài)切片根據(jù)程序的輸入值,對(duì)程序中計(jì)算到與輸入相關(guān)的語(yǔ)句進(jìn)行抽取,動(dòng)態(tài)切片的結(jié)果可能因?yàn)檩斎胫档牟煌煌?,但是?dòng)態(tài)切片比傳統(tǒng)的靜態(tài)切片在切片的準(zhǔn)確度上有明顯的優(yōu)勢(shì)。

本發(fā)明從可能插入了死代碼的c語(yǔ)言源代碼出發(fā),利用程序切片技術(shù)對(duì)包含死代碼的源代碼進(jìn)行分析,檢測(cè)出死代碼的位置,還原源代碼控制流結(jié)構(gòu)。具體技術(shù)方案是:

步驟1、獲取可能包含死代碼的c語(yǔ)言源代碼;

步驟2、將所述源代碼中的輸出語(yǔ)句與所述輸出語(yǔ)句中的變量集合組成切片準(zhǔn)則<n,v>,其中n是源代碼中的輸出語(yǔ)句,v是n中的變量集合,<n,v>表示當(dāng)前關(guān)心的是語(yǔ)句n上、集合v中變量對(duì)應(yīng)的計(jì)算;

步驟3、根據(jù)步驟2中的切片準(zhǔn)則對(duì)所述源代碼進(jìn)行靜態(tài)后向程序切片分析,獲得程序切片準(zhǔn)則與語(yǔ)句n處、集合v中的變量存在直接或間接的控制依賴或數(shù)據(jù)依賴的語(yǔ)句集a1;

步驟4、對(duì)源代碼進(jìn)行符號(hào)執(zhí)行,獲得程序切片所有可能的執(zhí)行路徑,通過(guò)約束求解器計(jì)算得到每條路徑下滿足謂詞條件的輸入值;

步驟5、以所述輸入值作為程序切片的輸入,根據(jù)所述切片準(zhǔn)則對(duì)所述源代碼進(jìn)行動(dòng)態(tài)后向程序切片分析,獲得程序切片在執(zhí)行時(shí)與切片準(zhǔn)則有關(guān)的語(yǔ)句集a2,也即與語(yǔ)句n處、集合v中的變量存在直接或間接的控制依賴或數(shù)據(jù)依賴的語(yǔ)句集;

步驟6、比較a1和a2,如果a1和a2中包含的語(yǔ)句相同,則源代碼中不存在死代碼;如果a1和a2中包含的語(yǔ)句不同,則a1中存在但a2中不存在的語(yǔ)句即為死代碼。

根據(jù)檢測(cè)范圍的要求,步驟2中所述變量集合v可以是輸出語(yǔ)句n的所有變量或部分變量。

所述靜態(tài)后向程序切片分析指靜態(tài)切片在不執(zhí)行程序時(shí)對(duì)源代碼進(jìn)行語(yǔ)義分析。

所述動(dòng)態(tài)后向程序切片分析指在輸入給定、程序執(zhí)行的情況下經(jīng)過(guò)的路徑上的語(yǔ)句,所述語(yǔ)句隨輸入的不同而變化。

步驟3還可位于步驟5之后或步驟3與步驟4~步驟5同時(shí)執(zhí)行。

本發(fā)明與已有技術(shù)相比:

(1)利用程序切片技術(shù),結(jié)合靜態(tài)切片分析與動(dòng)態(tài)切片分析方法,對(duì)c語(yǔ)言中插入的死代碼進(jìn)行檢測(cè),具有較高的準(zhǔn)確率;

(2)本發(fā)明能夠針對(duì)c語(yǔ)言源代碼中某一變量進(jìn)行相關(guān)死代碼檢測(cè),而不必對(duì)所有變量進(jìn)行分析,具有較強(qiáng)的針對(duì)性,提高了檢測(cè)效率。

附圖說(shuō)明

圖1為基于程序切片的c語(yǔ)言死代碼檢測(cè)方法實(shí)施例的整體流程框圖。

具體實(shí)施方式

為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實(shí)施例,對(duì)本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說(shuō)明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。

基于程序切片的c語(yǔ)言死代碼檢測(cè)方法,從插入了死代碼的c語(yǔ)言源代碼開(kāi)始,利用靜態(tài)切片和動(dòng)態(tài)切片技術(shù),并結(jié)合符號(hào)執(zhí)行,對(duì)c語(yǔ)言死代碼進(jìn)行檢測(cè)。圖1給出了本實(shí)施例的整體流程,具體實(shí)現(xiàn)步驟如下:

1):獲取可能插入了死代碼的c語(yǔ)言源代碼。死代碼是指插入在原始程序中,不會(huì)被執(zhí)行到,也不會(huì)對(duì)原始程序運(yùn)行結(jié)果產(chǎn)生任何影響的代碼。可能插入了死代碼的c語(yǔ)言源代碼可以從惡意代碼網(wǎng)站上下載得到。

2):將源代碼中的輸出語(yǔ)句與輸出語(yǔ)句中的變量組成切片準(zhǔn)則<n,v>,其中n是源代碼中的輸出語(yǔ)句,v是源代碼中變量的一個(gè)子集。切片準(zhǔn)則<n,v>表示當(dāng)前關(guān)心的是語(yǔ)句n上,集合v中變量對(duì)應(yīng)的計(jì)算。在切片準(zhǔn)則c=<n,v>下,程序p的切片s是一個(gè)可執(zhí)行的程序,它通過(guò)從p中刪除零個(gè)或多個(gè)語(yǔ)句獲得,并且和程序p關(guān)于切片準(zhǔn)則c具有一樣的行為。

3):根據(jù)步驟2中的切片準(zhǔn)則進(jìn)行靜態(tài)后向程序切片分析,靜態(tài)切片考慮程序所有可能的執(zhí)行情況,與輸入無(wú)關(guān)。靜態(tài)切片在不執(zhí)行程序的前提下對(duì)源代碼進(jìn)行語(yǔ)義分析,得到與切片準(zhǔn)則有關(guān)的所有語(yǔ)句,記為語(yǔ)句集s。語(yǔ)句集s可能包含死代碼。

4):對(duì)源代碼進(jìn)行符號(hào)執(zhí)行,用符號(hào)值代替源程序中變量的值,然后用基于中間語(yǔ)言的模擬程序執(zhí)行來(lái)進(jìn)行相關(guān)語(yǔ)義分析。得到程序所有可能的執(zhí)行路徑,再通過(guò)約束求解器計(jì)算每條執(zhí)行路徑可行的輸入值。

5):以步驟4中計(jì)算得到的可行輸入值作為程序的輸入,根據(jù)步驟2中的切片準(zhǔn)則進(jìn)行動(dòng)態(tài)后向程序切片分析。動(dòng)態(tài)切片只分析給定輸入、程序動(dòng)態(tài)執(zhí)行時(shí)經(jīng)過(guò)的路徑上的語(yǔ)句,它們隨輸入的不同而變化。在程序不同的執(zhí)行路徑下,得到程序?qū)嶋H執(zhí)行時(shí),與切片準(zhǔn)則有關(guān)的所有語(yǔ)句,記為語(yǔ)句集d。語(yǔ)句集d不包含死代碼。

6):比較步驟3中靜態(tài)分析獲得的語(yǔ)句集s和步驟5中動(dòng)態(tài)分析得到的語(yǔ)句集d。如果s和d中包含的語(yǔ)句相同,那么源代碼中不存在死代碼;如果s和d中包含的語(yǔ)句不同,那么s中存在但d中不存在的語(yǔ)句即為檢測(cè)出的死代碼。

如圖1所示,步驟3為靜態(tài)程序切片分析過(guò)程,步驟4~步驟5是動(dòng)態(tài)程序切片分析過(guò)程。步驟3和步驟4~步驟5可以同時(shí)執(zhí)行,以縮短程序運(yùn)行時(shí)間,提高效率。

本發(fā)明方案所公開(kāi)的技術(shù)手段不僅限于上述實(shí)施方式所公開(kāi)的技術(shù)手段,還包括由以上技術(shù)特征任意組合所組成的技術(shù)方案。

當(dāng)前第1頁(yè)1 2 
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1