欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

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

文檔序號:11729274閱讀:478來源:國知局

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



背景技術(shù):

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

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

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

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



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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

附圖說明

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

具體實施方式

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

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

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

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

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

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

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

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

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

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

當(dāng)前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
九台市| 东至县| 新竹县| 会理县| 平顺县| 宝鸡市| 墨脱县| 商河县| 两当县| 巴彦淖尔市| 南丰县| 从江县| 武汉市| 巨鹿县| 巨野县| 西安市| 天祝| 鹤壁市| 通化市| 黄梅县| 吐鲁番市| 潞城市| 五台县| 白银市| 咸丰县| 德清县| 牙克石市| 汉寿县| 上蔡县| 宁蒗| 肥西县| 沾化县| 凉山| 利津县| 城口县| 浏阳市| 攀枝花市| 准格尔旗| 朝阳县| 古浪县| 泗洪县|