基本塊
- 融合知識的小片段代碼相似性比較模型
小于5條指令的基本塊數(shù)量占比53%,不超過5個基本塊組成的二進制函數(shù)占比70.69%。這些較少基本塊組成的小片段代碼,由于攜帶指令序列較短,控制流程圖簡單,有限的語義信息使得當前二進制代碼相似性比較方案準確性差,因此如何提升小片段代碼相似性比較準確率對軟件安全分析具有重要意義。軟件是人類在工作中用特定語言創(chuàng)造出來的,是人類知識得以延續(xù)的新載體。軟件知識并不隨軟件編譯優(yōu)化和跨平臺的改變而改變,因此知識的穩(wěn)定性、可重復性和可預測性[2]能準確反映代碼間相似性比
計算機工程與設計 2023年8期2023-09-13
- 基于關聯(lián)規(guī)則的終端軟件缺陷檢測方法研究
]。二進制軟件基本塊執(zhí)行順序根據(jù)軟件底層指令確定,軟件底層指令位于尾指令前面,由多個匯編指令構(gòu)成,基本塊在執(zhí)行第一行代碼時,不需要執(zhí)行二進制程序,此時,基本塊可表示為返回指令集合設置為a={b1,b2,…,bm},m為基本塊a的地址長度,b1表示基本塊a的跳轉(zhuǎn)指令,bm表示基本塊a的匯編指令。二進制軟件的第一行代碼程序可表示為若干基本塊的集合A={a1,a2,…,ai},i表示基本塊的控制信息[5-6]。為了提取終端軟件特征信息,需要根據(jù)尾指令中的自定義函
電子設計工程 2023年5期2023-03-10
- 改進的基于底層虛擬機混淆器的指令混淆框架
分為函數(shù)混淆、基本塊混淆和指令混淆。指令作為高級程序的底層組織,面向指令層級的混淆可以做一些更細致精準的操作。如果攻擊者能夠破解程序,首先面對的便是破解后的程序指令,因此指令混淆對此階段的代碼保護具有重要作用。這也正是本文的工作聚焦于指令混淆的原因。底層虛擬機混淆器(Obfuscator Low Level Virtual Machine,OLLVM)[7]是一款經(jīng)典的開源混淆項目,它支持指令替換、虛假控制流、控制流扁平化等功能。然而,在指令混淆層面,它只
計算機應用 2023年2期2023-02-24
- GCC非滿載SLP向量化①
rizer)和基本塊向量化器(basic block vectorizer), 它們分別具有獨立的入口[18]. 基本塊向量化器使用SLP方法發(fā)掘直線型代碼中的超字級并行性[19].本文介紹了一種面向基本塊的非滿載向量化方法ISLP(insufficient SLP), 旨在完成超字級并行性不足程序的向量化. 在深入分析了GCC 7.1.0的SLP向量化框架后, 詳細探討了ISLP在GCC中的實現(xiàn), 包括非滿載SLP計算樹的構(gòu)建, 基于數(shù)據(jù)重組策略的代碼生
計算機系統(tǒng)應用 2022年9期2022-09-20
- SiCsFuzzer:基于稀疏插樁的閉源軟件模糊測試方法
蓋率不可推導的基本塊或分支進行插樁跟蹤,并根據(jù)跟蹤結(jié)果推導其余基本塊或分支的被覆蓋情況,同時結(jié)合“預熱”優(yōu)化,避免因動態(tài)插樁平臺反復啟動以及對目標程序代碼的重復翻譯所引入的時間開銷。通過剔除閉源軟件覆蓋率跟蹤過程中的冗余開銷,提高閉源程序模糊測試的效率,進而提高針對閉源程序的漏洞發(fā)現(xiàn)效率。其中,基于稀疏插樁的覆蓋率跟蹤策略以傳統(tǒng)程序分析技術的支配關系作為插樁位置選擇以及覆蓋率推導的基礎。目前主流的基于覆蓋率反饋的模糊測試工具默認對目標程序中的所有基本塊或分
信息安全學報 2022年4期2022-08-16
- 基于多尺度卷積神經(jīng)網(wǎng)絡的低劑量CT圖像后處理
理方案2.1 基本塊與普通CNN相比,殘差網(wǎng)絡可以實現(xiàn)更深層次的網(wǎng)絡結(jié)構(gòu)。殘差網(wǎng)絡一般由基本塊(Basic block)構(gòu)成。通用的基本塊結(jié)構(gòu)如圖2(a)所示,包含3個卷積層(Conv+BN+ReLU)和1個平均池化層。卷積層由卷積(Conv)、批歸一化(Batch Norm,BN)和ReLU激活函數(shù)實現(xiàn)。圖2 基本塊結(jié)構(gòu)Fig.2 Structure of basic block本文設計的多尺度CNN以低劑量CT圖像為輸入,以重建的高質(zhì)量CT圖像為輸出。
燕山大學學報 2022年4期2022-08-01
- 基于預訓練的惡意軟件分類方法
不再僅僅把程序基本塊相連而是在基本塊的基礎上再以函數(shù)作為圖節(jié)點進行嵌入。1 檢測模型概述本章節(jié)將介紹檢測模型的整體概況和關鍵技術細節(jié)。1.1 控制流圖及函數(shù)調(diào)用圖基本塊是程序運行的基本單元,由基本塊構(gòu)成的程序控制流圖能夠很準確地反映程序的特征,并且控制流圖天然形成圖結(jié)構(gòu)=(,),基本塊本身作為圖頂點(),控制流關系形成邊()。但在程序?qū)嶋H運行時,由基本塊構(gòu)成的函數(shù)結(jié)構(gòu)也是客觀存在的,僅僅只考慮基本塊構(gòu)成的圖結(jié)構(gòu)會存在信息損失,本文在控制流圖(CFG)的基礎
現(xiàn)代計算機 2022年9期2022-07-25
- 一種基于時間分片的定向模糊測試
G),計算所有基本塊到達目標點的最小距離,如Dijkstra 距離,這些距離用于在模糊測試時計算種子的優(yōu)先度、能量分配等,使定向模糊測試趨向于目標點。在靜態(tài)分析中,由于LLVM 可跨平臺、編譯速度顯著優(yōu)于gcc,并且可以設計插件提取CFG 和CG,因此在定向模糊測試中,通過LLVM 插樁的方式將距離和覆蓋率信息插入目標程序。1.3 符號執(zhí)行符號執(zhí)行是指將程序的約束條件轉(zhuǎn)化為抽象的符號,則一個程序的輸出即可轉(zhuǎn)化為一個關于輸入的函數(shù),符號執(zhí)行可以得出到達目標代
現(xiàn)代計算機 2022年8期2022-07-01
- 基于級聯(lián)森林的控制流錯誤檢測優(yōu)化算法
基于級聯(lián)森林的基本塊脆弱性預測模型,該模型經(jīng)過大量的故障注入實驗樣本訓練,可以識別出脆弱性高的基本塊.我們針對性的將這些高脆弱性的基本塊進行重新拆分,使其能夠更好的配合基于標簽的檢測算法.我們對MiBench測試集[16]中6個測試程序進行故障注入實驗,結(jié)果表明,在對程序基本塊進行選擇并拆分后,CFCSS算法[10]和RCFC算法[11]的檢測率均有提升,且相對于隨機插樁標簽的開銷較低,實現(xiàn)了高效費比的基本塊拆分.本文的主要貢獻如下:1)本文通過收集分析大
小型微型計算機系統(tǒng) 2022年5期2022-05-10
- 基于原子混淆的通用側(cè)信道漏洞修補方法
碼標識信息,以基本塊為最小單元對漏洞代碼做進一步處理:混淆插樁模塊在編譯時向漏洞代碼插入額外的混淆訪存指令,以達到隱藏程序真實運行軌跡的目的;原子事務封裝模塊封裝漏洞代碼和混淆代碼為原子事務,保障代碼在執(zhí)行中不可被中斷。在運行階段,動態(tài)混淆模塊與異常檢測模塊被加載到程序進程空間中,動態(tài)混淆模塊在程序執(zhí)行時不斷變換混淆訪存目標地址,增加混淆噪聲的不確定性,異常檢測模塊則監(jiān)控原子事務在執(zhí)行過程中未被惡意中斷,確保代碼是以原子性運行的。圖1 側(cè)信道漏洞修補的工作
網(wǎng)絡與信息安全學報 2022年2期2022-04-18
- 基于視頻碼流的交通標志檢測
為H.264,基本塊大小為4×4.在視頻編碼碼流中,對于幀內(nèi)預測編碼塊而言,幀內(nèi)預測模式、像素殘差分布情況CBP和像素殘差經(jīng)過熵編碼后都會寫入碼流。對交通標志邊緣部分而言,因具有固定形狀和較明顯色彩,與周圍環(huán)境差別明顯,其幀內(nèi)預測模式多采用4×4塊預測模式,而非16×16塊預測模式;其像素殘差情況CBP值亮度和色度DC直流分量和AC交流分量多數(shù)情況不為0,色度AC交流分量基本不為0,其像素殘差值較大,尤其是色度UV殘差值更明顯。可以通過分析預測模式、像素殘
太原理工大學學報 2022年1期2022-01-27
- 面向國產(chǎn)平臺的LLVM 自動向量化移植與優(yōu)化
實現(xiàn)了循環(huán)級與基本塊級的自動向量化方法[5]。申威系列處理器是我國自主研發(fā)、面向高性能計算的通用微處理器,該處理器主要針對計算密集型程序,如科學計算、數(shù)字信號分析、多媒體處理等。申威系列處理器包含豐富的向量運算指令和完善的向量重組指令,為程序的向量化提供了良好的硬件基礎。LLVM 編譯器中自動向量化部分主要由Intel 團隊開發(fā)推進,算法以及向量指令的應用更適用于X86 平臺[6]。目前,LLVM 編譯器還未支持面向國產(chǎn)平臺的自動向量化。由于指令集的差別,
計算機工程 2022年1期2022-01-14
- 基于多粒度語義分析的二進制漏洞搜索方法*
urus分別對基本塊、函數(shù)和模塊3種不同粒度下的語義進行提取及分析,并計算3種粒度下的語義特征相似度。在獲取到3種粒度下語義特征的特征相似度后,Taurus將計算其總體相似度,然后對相似度得分進行降序排序,最終判定目標二進制文件中是否含有疑似漏洞。目前本文已實現(xiàn)Taurus原型程序,并將其與各種配置下的最新漏洞搜索方法進行了比較,結(jié)果表明Taurus具有更好的搜索性能。本文貢獻如下所示:(1)首次提出基于多粒度語義特征分析的二進制漏洞搜索方法,以提高漏洞搜
計算機工程與科學 2021年12期2021-12-23
- 采用隱式跳轉(zhuǎn)的控制流混淆技術
制流圖,之后從基本塊跳轉(zhuǎn)、函數(shù)調(diào)用與變量引用入手,隱藏這些敏感信息,減少靜態(tài)分析時所能獲取到的有價值信息,實現(xiàn)對程序的保護。同時通過構(gòu)建狀態(tài)轉(zhuǎn)移模型和實施基于環(huán)境密鑰的兩階段加密方案,解決了密鑰安全和密文重復出現(xiàn)問題,彌補了其他方案的不足,提高了軟件保護的能力。1 相關工作代碼混淆的概念由來已久,在20世紀90年代末這個概念就已經(jīng)被提出。它的形式有很多,其中最簡單的一種形式是符號混淆,它通過將源碼中的函數(shù)名、類名以及變量名替換成一些無意義的符號,來增加攻擊
計算機工程與應用 2021年20期2021-10-28
- 基于基本塊分組與融合的特征直線檢測算法
法[9],提出基本塊的概念,設計了一種基于基本塊分組、漸進式融合的特征直線檢測方法。利用新的Helmholtz原理準則剔除由噪聲等外界干擾形成的虛假特征直線,得到準確特征直線集。實驗用Matlab 仿真工具進行了驗證,結(jié)果證明了該算法對特征直線檢測的高效性。1 相關工作目前,常見的兩類特征直線檢測方法為:基于圖像空間變換域的特征直線檢測方法和基于圖像像素信息的特征直線檢測方法?;趫D像空間變換域的特征直線檢測方法是一種全局特征線檢測方法,其基本思想是在圖像
計算機技術與發(fā)展 2021年9期2021-09-28
- 基于LLVM 的Android 應用程序加固方法
APK 內(nèi)所有基本塊進行切片并進行混淆會導致很大的性能開銷,因此只能選擇部分關鍵函數(shù)進行保護。Kyeonghwan Lim 等人[3]進一步提出針對Android 本地代碼的保護方法,通過將Android 字節(jié)碼以更安全和高效的形式保存在本地代碼中并使用OLLVM 來對其進行混淆,以增強代碼最終的安全性,但是近年來有很多針對OLLVM 的反混淆研究,僅僅使用OLLVM 進行混淆保護不能很好的增加攻擊者分析的難度,因此需要增加混淆方式的多樣性和復雜性以便更好
現(xiàn)代計算機 2021年11期2021-05-28
- Proto-Perf:快速精確的通用處理器原型系統(tǒng)性能評估方法*
動態(tài)程序分析和基本塊向量聚類分析的處理器原型系統(tǒng)性能評估方法Proto-Perf,該方法可以顯著縮短程序測試的時間,同時可以提供較高精確度的性能測試結(jié)果。(2)Proto-Perf使用簡單,并且可以跨不同處理器驗證平臺工作。(3)實驗結(jié)果表明,Proto-Perf可以在非常短的時間內(nèi)精確地測算出處理器原型系統(tǒng)的性能。本文的其余部分為:第2節(jié)介紹快速精確的通用處理器FPGA原型系統(tǒng)性能評估方法的研究動機,第3節(jié)介紹Proto-Perf性能評估方法,第4節(jié)介紹
計算機工程與科學 2021年4期2021-05-11
- 距離與權重相結(jié)合的導向式灰盒模糊測試方法
析計算出程序各基本塊到目標區(qū)域的距離,并通過插樁的方式將距離信息插入到目標程序中,在測試階段根據(jù)插樁信息計算每個種子距離目標區(qū)域的距離,使用啟發(fā)式算法提升距離目標區(qū)域近的種子生成測試用例的數(shù)量,保證了測試的高效性與導向性[17]。本文對現(xiàn)有的導向式灰盒模糊測試方法進行分析,提出一種距離與權重相結(jié)合的導向式灰盒模糊測試方法,通過改進距離計算方法提高導向式灰盒模糊測試的準確性。1 導向式灰盒模糊測試分析本文以文獻[15]開發(fā)的導向式灰盒模糊測試器Aflgo 為
計算機工程 2021年3期2021-03-18
- 通道與空間注意力圖像超分辨率網(wǎng)絡
于注意力機制的基本塊,它由通道注意力和空間注意力兩部分組成,分別對通道間的高低頻信息與同一通道內(nèi)不同空間位置的高低頻信息分配不同的權重,從而使得高頻與低頻信息都能更好地被學習。進一步的,基于該注意力基本塊,設計了基于注意力機制的單幅圖像超分辨率網(wǎng)絡,若干基本塊結(jié)合短期特征體質(zhì)模塊組成一特征提取組,若干特征提取組與長期特征調(diào)制模塊形成整個特征映射子網(wǎng)。低分辨率圖像在經(jīng)過前期特征提取、特征映射子網(wǎng)與上采樣模塊后,高分辨率圖像得以重建,其中特征調(diào)制模塊能夠解決來
計算機工程與應用 2021年2期2021-01-22
- 基于程序雙維度特征的惡意程序相似性分析
息,并基于離線基本塊序列構(gòu)造軟件控制流圖,從軟件代碼語義特征和結(jié)構(gòu)特征兩個維度對軟件進行相似性分析。動態(tài)提取軟件特征能夠有效避免加殼、混淆等軟件變形技術的影響,提取匯編層面的信息使檢測不受軟件開發(fā)語言的限制,從兩個維度進行檢測,既考慮到軟件的語義特征又考慮到軟件的結(jié)構(gòu)特征,能夠?qū)浖M行較為全面的分析。1 相關工作隨著軟件技術的發(fā)展,軟件復用技術給軟件開發(fā)帶來極大便利,同時也帶來了盜版軟件泛濫,惡意軟件開發(fā)門檻降低,惡意軟件泛濫的問題。最初,軟件相似性或同
計算機工程與應用 2021年1期2021-01-11
- 抵御控制流分析的程序混淆算法
圖中的結(jié)點稱為基本塊,它是程序的一段指令序列且按順序執(zhí)行。每個基本塊只有一個唯一的出口和入口,其中入口是基本塊的第一條指令,可以是程序的第一條指令、無條件跳轉(zhuǎn)的目標指令或條件跳轉(zhuǎn)的下一條指令。出口是基本塊的最后一條指令,其一般為程序的結(jié)束指令、跳轉(zhuǎn)指令或跳轉(zhuǎn)目標指令的前一條指令。然后,通過路徑可達性推理得到程序行為同外部執(zhí)行環(huán)境的輸入之間的依賴關系。這些依賴關系可被攻擊者用于程序反編譯破解、隱私數(shù)據(jù)竊取和程序算法重構(gòu)等,對程序安全運行和知識產(chǎn)權的保護構(gòu)成嚴
計算機工程與設計 2020年11期2020-11-17
- 結(jié)合路徑標簽和數(shù)據(jù)變異的模糊測試關鍵數(shù)據(jù)定位方法
以被劃分成很多基本塊. 使用B表示一個基本塊,同時假設可執(zhí)行文件Ei的代碼可劃分為Li個基本塊,那么可將Ei視為基本塊的集合EBi={Bi,1,Bi,2,…,Bi,Li}.PB=∪EBi={B1,B2,…,BL}.(1)程序執(zhí)行的過程就是按照某種順序執(zhí)行集合PB中的基本塊,因此執(zhí)行過程的監(jiān)控可以轉(zhuǎn)換為監(jiān)控正在執(zhí)行的基本塊,執(zhí)行過程的記錄則可以轉(zhuǎn)換為記錄執(zhí)行過的基本塊序列.一個基本塊B有且只有一個入口和一個出口,在其執(zhí)行過程中僅會從入口處開始執(zhí)行并從出口處結(jié)
北京理工大學學報 2020年9期2020-10-21
- 基于控制流的軟件設計與實現(xiàn)一致性分析方法
制流信息,包括基本塊序列和控制流圖。函數(shù)間調(diào)用關系反映了系統(tǒng)的結(jié)構(gòu)[13],每個函數(shù)內(nèi)部的控制流信息反映了函數(shù)的內(nèi)部結(jié)構(gòu),因此選其作為函數(shù)特征并建立特征模型。函數(shù)特征提取具體過程如下:2.1 中間表示的生成偽代碼和源代碼中的控制結(jié)構(gòu)會造成控制流的改變,難以直接從中獲取控制流信息,因此將其轉(zhuǎn)換成一種按順序執(zhí)行的語句序列——中間表示。該過程包括偽代碼中間表示的生成和源代碼中間表示的生成。2.1.1 偽代碼中間表示的生成偽代碼中間表示(Pseudocode In
計算機應用 2020年10期2020-10-18
- 結(jié)合混合符號執(zhí)行的導向式灰盒模糊測試技術
G)來計算每個基本塊到若干個目標位置的距離,將目標的可達性作為一種優(yōu)化,使用啟發(fā)式算法來提升距離更近的種子的能量,使其生成的測試用例能快速達到程序的目標區(qū)域,從而實現(xiàn)了模糊測試的導向性。符號執(zhí)行作為一種重要的程序分析方法,可以為程序測試提供高覆蓋率的測試用例,以觸發(fā)深層的程序錯誤[4]。由于在符號執(zhí)行過程中,針對代碼執(zhí)行路徑會生成相應路徑的約束條件,如果軟件較大或存在大量循環(huán)操作,可能導致路徑約束非常大,甚至呈現(xiàn)爆炸式增長[5]?;旌戏枅?zhí)行[6]是結(jié)合了
計算機工程 2020年8期2020-08-19
- 一種檢測控制流錯誤的多層分段標簽方法
一概念就是程序基本塊劃分的前身。ECCA(Enhanced Control-flow Checking using Assertions)也屬于早期軟件實現(xiàn)的控制流錯誤檢測方法,該方法通過在程序無分支間隔的入口和出口處插樁斷言來檢測錯誤[9]。此文獻中的無分支間隔和斷言與后來的基本塊和標簽已經(jīng)非常接近了,但是由于更新操作采用乘除法,并且插樁的斷言本身較為復雜,會產(chǎn)生較大的開銷。CFCSS(Control-Flow Checking by Software
計算機與現(xiàn)代化 2020年8期2020-08-17
- 基于種子變異潛力的模糊測試方法
止塊,這種類型基本塊并不具有高的漏洞挖掘價值,因此覆蓋這種類型分支的種子價值較低、變異潛力也較低。針對上述問題,提出了一種基于種子變異潛力分析的模糊測試方法,首先提取程序控制流圖,以基本塊入口地址作為其標記,考慮基本塊自身情況以及互相之間調(diào)用情況來賦予其權值。同時,在每一代種子運行結(jié)束后,根據(jù)種子覆蓋路徑附近未被覆蓋的基本塊權值情況以及種子運行時資源開銷情況來計算適應度,從而篩選優(yōu)質(zhì)種子,投入下一代變異。本文策略能體現(xiàn)種子變異潛力主要由于以下兩個方面。(1
科學技術與工程 2020年9期2020-05-20
- 超強通用編譯器優(yōu)化工具準確率是傳統(tǒng)方法的5倍
萬計自動描述的基本塊(計算指令的基本片段),來確切了解不同的芯片機構(gòu)如何執(zhí)行計算,效果也非常驚艷。MIT News透露,傳統(tǒng)基于人工設計的模型,預測代碼在芯片上的運行速度,與實際運行速度之間的錯誤率高達50 %。就算是芯片供應商,比如英特爾預測代碼在自己芯片上的運行速度,錯誤率也達到20 %。而Ithemal,錯誤率僅為10 %,性能是傳統(tǒng)方法的5倍,英特爾的2倍。整個過程都是自動化的,不需要人為干預,就能夠快速分析數(shù)十萬或數(shù)百萬個基本塊,并且通用它可以快
計算機與網(wǎng)絡 2020年2期2020-04-20
- 一種基于余弦算法的手機病毒檢測方法
下三個子算法:基本塊劃分算法、控制流分析算法以及行為分析算法。2.2 基本塊劃分算法基本塊劃分是在匯編代碼的基礎上進行的,基本塊的過程可以分為兩步:(1)確定每個基本塊的入口指令,根據(jù)上述原理,基本塊入口指令只可能有三種:· ①程序入口處的第一條指令;· ②jmp 或者jcc 跳轉(zhuǎn)目標地址處的指令;· ③jmp 或者jcc 指令的下一條指令。(2)根據(jù)每個基本塊的入口指令,構(gòu)造其所在的基本塊。此時又有三種情況:· ①由當前入口指令的開始地址直到下一個入口指
網(wǎng)絡安全技術與應用 2020年4期2020-04-13
- 基于QEMU的動態(tài)二進制插樁技術
層次上的二進制基本塊插樁,跟蹤和記錄程序執(zhí)行流;2) 分析與實驗研究插樁對仿真性能的影響,發(fā)現(xiàn)日志輸出是影響仿真性能的關鍵因素,通過分析計算,解決了由插樁引起的仿真性能驟降的不良影響;3) 設計插樁日志分析工具,完成了對嵌入式全系統(tǒng)的執(zhí)行流跟蹤、函數(shù)調(diào)用圖、覆蓋率分析.1 相關工作通過文獻查閱發(fā)現(xiàn),目前已有一些學者研究使用和改進QEMU來進行軟件動態(tài)分析.文獻[13]對程序執(zhí)行路徑跟蹤,查找程序執(zhí)行熱路徑.該文獻通過在QEMU的基本塊首部插入熱路徑預測和跟
計算機研究與發(fā)展 2019年4期2019-04-18
- 一種高效解決間接轉(zhuǎn)移的反饋式靜態(tài)二進制翻譯方法
改進,提出了以基本塊為單位進行翻譯的反饋式靜態(tài)二進制翻譯框架(feedback static QEMU, FD-SQEMU),并提出了二級地址映射表法,更快速地實現(xiàn)了代碼定位.為了解決基本塊翻譯引入的代碼定位問題,設計了高效的二級地址映射表來快速定位轉(zhuǎn)移指令目標地址.在翻譯過程中,使用數(shù)組結(jié)構(gòu)Address保存源平臺每個基本塊對應的目標平臺的代碼基本塊起始地址,并使用索引數(shù)組Index保存源平臺指令地址在Address中對應的索引位置,從而根據(jù)Index和
計算機研究與發(fā)展 2019年4期2019-04-18
- 基于污點分析的PHP漏洞檢測
分節(jié)點還要生成基本塊摘要,以便在后續(xù)污點分析中使用。基本塊摘要中包含一些關鍵信息(主要包含常量,全局變量,返回值,全局變量的注冊以及數(shù)據(jù)流信息等)。具體的CFG生成算法如下:1.首先創(chuàng)建一個輸入基本塊,并為其構(gòu)造一個輸出邊,連接到當前基本塊,并作為當前基本塊的輸入邊。2.獲取AST中的節(jié)點,若是只有一個節(jié)點,則將其加入基本塊,生成相應的基本塊摘要。如果包含多個節(jié)點,則對其進行遍歷處理。3.如果遇到函數(shù)定義類型節(jié)點類型則不對其進行分析。4.如果節(jié)點是跳轉(zhuǎn)類型
中國傳媒大學學報(自然科學版) 2019年1期2019-04-12
- 基于動態(tài)二進制翻譯和插樁的函數(shù)調(diào)用跟蹤
框架,通過關閉基本塊鏈接功能,迫使每個基本塊代碼執(zhí)行結(jié)束后進行基本塊切換操作,切換過程中統(tǒng)計函數(shù)信息,并寫入日志.相比S2E提高了分析性能和支持的CPU平臺種類,但是該方法依賴于QEMU的日志并必須關閉QEMU的基本塊鏈接功能,造成3.65倍的性能開銷.上述工具基于QEMU模擬器進行函數(shù)調(diào)用跟蹤,并實現(xiàn)對系統(tǒng)狀態(tài)的監(jiān)測與分析,但是監(jiān)測數(shù)據(jù)獲得的方法破壞了QEMU的模擬和加速機制,造成較大的性能開銷.如何精確記錄系統(tǒng)的行為并且不破壞QEMU模擬器的加速機制是
計算機研究與發(fā)展 2019年2期2019-02-20
- 測試用例執(zhí)行軌跡分析的故障定位方法
G中的節(jié)點稱為基本塊(basic block),一個基本塊是一段不包含跳轉(zhuǎn)或分支語句的順序代碼集合,位于基本塊中的代碼在一次執(zhí)行中要么全部被執(zhí)行,要么全部被跳過,G中的所有基本塊可以表示為B={b1,b2,…,bm}.G中的有向邊稱為跳轉(zhuǎn),跳轉(zhuǎn)連接了兩個不同的基本塊,一條從基本塊bε指向基本塊bγ的邊表示程序執(zhí)行完bε中的所有代碼,同時使程序處于將要執(zhí)行bγ的狀態(tài),G中的所有跳轉(zhuǎn)可以表示為E={ei|ei=,bε,bγ∈B,ε≠γ}.此外,G中還包含兩類特
小型微型計算機系統(tǒng) 2019年1期2019-01-24
- 基于符號執(zhí)行的底層虛擬機混淆器反混淆框架
圖形顏色粗陋、基本塊中的IR中間表示晦澀難懂、反混淆后的圖形無法反編譯恢復程序源碼等。針對這些缺點,本文在研究符號執(zhí)行工具angr[6]和二進制分析逆向工程框架(Binary Analysis and Reverse engineering Framework,BARF)[7]逆向框架的基礎上,在x86架構(gòu)的Linux平臺下,提出了一種基于符號執(zhí)行的OLLVM自動化反混淆框架。該框架以C/C++文件經(jīng)OLLVM混淆后得到的ELF文件作為輸入,利用BARF框
計算機應用 2018年6期2018-08-28
- 一種基于序列模式挖掘的trace探測方法
,按順序執(zhí)行的基本塊便可以看作是序列數(shù)據(jù)。服務器端程序運行于網(wǎng)絡環(huán)境下,服務器響應用戶請求的解釋型語言程序通常是動態(tài)生成或用戶提交的,無法事先進行編譯優(yōu)化處理,可以使用即時編譯技術提高程序執(zhí)行效率。同時,服務器端程序具有并發(fā)執(zhí)行的特點,并發(fā)執(zhí)行的解釋型程序可以看作是多個基本塊序列,通過對這些基本塊序列應用序列模式挖掘,可以識別服務端程序中的熱點代碼序列,即熱點trace。服務器端的trace探測能夠利用服務器端并發(fā)的特點,更為高效地識別trace,從而提升
計算機應用與軟件 2018年7期2018-07-25
- LLVM中靜態(tài)程序信息的過程間分析方法
,可以獲取當前基本塊的后繼信息;通過switch指令獲取基本塊的分支信息,解決控制流的分支問題。表1 代表性LLVM指令3 以過程內(nèi)信息和過程間信息的提取為分析示例LLVM IR文件中包含指針、數(shù)據(jù)流、過程內(nèi)以及過程間等的信息。通過提取本文需要的過程內(nèi)和過程間的信息,獲取CFICG信息。CFICG表示為CFICG=,Node>其中,cf表示過程內(nèi)信息,N表示基本塊,E表示基本塊之間的流向,Node表示過程間信息。3.1 過程內(nèi)信息提取的分析關于過程內(nèi)信息的
計算機工程與設計 2018年6期2018-06-19
- 基于動態(tài)符號執(zhí)行的不透明謂詞反混淆算法
不透明謂詞作為基本塊插入到控制流圖中。不透明謂詞是指在混淆過程中己經(jīng)確定其輸出,但是通過靜態(tài)程序分析方法很難計算在某個程序點的值的謂詞表達式。通過在控制流圖中插入不透明謂詞并將其作為分支條件的一部分,能夠加大控制流混淆的強度,使得靜態(tài)程序分析很難自動化地計算出輸出。Collberg等[4]和袁征等[6]分別在他們的論文中給出了不透明謂詞的定義。定義1(不透明謂詞[4,6]) 當程序中的一個謂詞O在某個程序點P上的輸出δ的一些屬性在程序進行混淆時就確定了,則
西華大學學報(自然科學版) 2018年3期2018-06-01
- 基于操作碼合并的Python程序防逆轉(zhuǎn)算法
取結(jié)束。定義3基本塊基本塊是由S中順序執(zhí)行的若干個操作碼構(gòu)成的序列。通常情況下,若S中沒有出現(xiàn)條件跳轉(zhuǎn)、絕對跳轉(zhuǎn)操作,則這些操作碼處于同一個基本塊中。定義4基本塊信息字節(jié)碼文件的基本塊信息B是一個由正整數(shù)構(gòu)成的單調(diào)不減序列,其長度與操作碼序列S相同,且其中的每個元素與S中的每個操作碼一一對應,元素值為對應的操作碼在S中所在的基本塊號。圖2所示為一個基本塊信息,從圖中可以看出,S中第1個操作碼處于第1個基本塊,第2個~第5個操作碼處于第2個基本塊,依此類推。
計算機工程 2018年5期2018-05-30
- 一種基于頻度統(tǒng)計的動態(tài)二進制翻譯優(yōu)化方法*
段。翻譯階段以基本塊為單位進行,將翻譯后的代碼以翻譯塊TB(Translated Block)為單位存入到T-Cache中,執(zhí)行階段以TB為單位進行,一個TB執(zhí)行完畢后檢查是否存在塊鏈,如果存在則繼續(xù)執(zhí)行代碼,否則轉(zhuǎn)入到查找階段。T-Cache作為連接查找、翻譯和執(zhí)行三個過程的紐帶,是構(gòu)成動態(tài)二進制翻譯的重要內(nèi)容,也是優(yōu)化工作的一個關注點。Figure 1 Model of dynamic binary translator圖1 動態(tài)二進制翻譯器的工作模型
計算機工程與科學 2018年4期2018-05-08
- 基于表驅(qū)動的純軟件簽名錯誤檢測算法
程中賦予每一個基本塊一個奇偶校驗位,可檢測出奇偶性錯誤;EDDI采用復制指令,并通過插入合適的檢測指令進行驗證,但這種方法易導致代碼容量增加近100%以及性能方面的損失[12-13]。本文在研究CFDSS算法的基礎上,提出一種基于表驅(qū)動[14-15]的控制流錯誤檢測算法,使用一張二維表和簽名來監(jiān)測目標程序的控制流。1 相關研究工作文獻[4,7]中關于軟件簽名和斷言算法,提出的最重要的解決辦法就是CFDSS技術和ECCA技術。這2種技術能實現(xiàn)很高的錯誤檢測覆
計算機工程 2018年4期2018-04-19
- BWDSP104X多條件謂詞編譯優(yōu)化①
條件分支會分割基本塊規(guī)模,將一個基本塊變成多個基本塊,從而使可調(diào)度區(qū)域減小,不利于指令調(diào)度.其二,減弱甚至中斷指令流水.分支后的指令是否執(zhí)行需要根據(jù)當前分支的執(zhí)行結(jié)果進行判斷,因此當程序中含有大量的條件分支時,會中斷指令流水,變指令為串行執(zhí)行.為了減弱條件分支對程序性能的影響,傳統(tǒng)的方式是采用分支預測,即在指令調(diào)度之前預測哪條分支指令會被執(zhí)行,然而當條件分支預測失敗時,將會導致流水線中斷,減弱指令流水的性能.分支預測并沒有對條件分支和多個條件分支之間的控制
計算機系統(tǒng)應用 2018年1期2018-02-07
- PLC程序控制流分析方法
示的基礎上劃分基本塊,并以此為基本單元構(gòu)建了程序的控制流圖。實驗結(jié)果表明,所提方法能夠恢復語句表形式PLC程序的控制流結(jié)構(gòu),為程序理解和安全性分析提供了基礎??删幊踢壿嬁刂破鳎豢刂屏?;中間表示;程序理解;安全性0 引言自“震網(wǎng)”病毒面世以來,人們對工業(yè)控制系統(tǒng)安全的認識達到了前所未有的高度。作為工業(yè)控制系統(tǒng)的核心組件,可編程邏輯控制器(Programmable Logic Controller, PLC)關系著整個工業(yè)現(xiàn)場的運轉(zhuǎn)秩序,同時也影響著財產(chǎn)、人身
計算機應用 2017年12期2018-01-08
- 發(fā)掘函數(shù)級單指令多數(shù)據(jù)向量化的方法
譯器僅從循環(huán)和基本塊兩個粒度挖掘程序中的向量并行性,編譯器還不能從函數(shù)這個粒度識別程序中的數(shù)據(jù)級并行[8]。當前的SIMD自動向量化方法主要從循環(huán)和基本塊兩個粒度發(fā)掘程序的向量并行性,循環(huán)級向量化方法與面向向量機的傳統(tǒng)向量化方法相似[9],對其的改進包括外層循環(huán)向量化[10]和多面體指導的多重循環(huán)向量化[11-12]。超字級并行(Super-word Level Parallel, SLP)是第一個發(fā)掘基本塊內(nèi)向量并行性的方法[13]。目前編譯器更多地是發(fā)
計算機應用 2017年8期2017-10-21
- 基于基本塊指紋的二進制代碼同源性分析
賈 鵬?基于基本塊指紋的二進制代碼同源性分析◆顏 穎 方 勇 劉 亮 劉露平 賈 鵬(四川大學電子信息學院 四川 610065)二進制代碼同源性分析在代碼的專利保護和惡意代碼溯源分析中有重大意義,本文提出了一種基于基本塊指紋的、以更細粒度的對比分析算法來確定二進制代碼同源性的方法。該方法從基本塊中提取三個指紋信息:跳轉(zhuǎn)邏輯特征、代碼序列特征和子函數(shù)名特征,將基本塊的控制流程圖根據(jù)跳轉(zhuǎn)邏輯表示成由0、1構(gòu)成的序列以計算基本塊跳轉(zhuǎn)邏輯特征的相似度,利用基于滑
網(wǎng)絡安全技術與應用 2017年3期2017-10-13
- 融合分詞隱層特征的漢語基本塊識別
隱層特征的漢語基本塊識別李國臣1,2, 劉展鵬1,王瑞波3,李濟洪3(1. 山西大學 計算機與信息技術學院,山西 太原 030006;2. 太原工業(yè)學院 計算機工程系,山西 太原 030008;3. 山西大學 計算中心,山西 太原 030006)該文以字為基本標注單位,構(gòu)建了一種漢語基本塊識別的神經(jīng)網(wǎng)絡學習模型。模型聯(lián)合分詞任務的神經(jīng)網(wǎng)絡學習模型與基本塊識別任務模型,將分詞任務模型中學習得到的隱層特征融入基本塊識別的模型中,兩模型相互交替優(yōu)化學習模型參數(shù),
中文信息學報 2016年2期2016-05-04
- 協(xié)同仿真中的精確異常保證技術
一般是通過定位基本塊、發(fā)現(xiàn)異常、回滾、重新翻譯執(zhí)行的方法,給仿真帶來一定的性能開銷[1-6]。支持精確異常一般分為在軟件層實現(xiàn)和硬件層實現(xiàn),QEMU[7]對精確異常的處理在軟件層實現(xiàn),采用定位基本塊塊首EIP,保存塊首處理器狀態(tài),當異常在基本塊中發(fā)生時,通過定位的EIP回滾到塊首位置,恢復塊首位置處理器狀態(tài),然后再進行逐條翻譯執(zhí)行,可以定位到異常發(fā)生的位置,這種支持精確異常的方式由于需要回滾、解釋執(zhí)行,因而降低系統(tǒng)仿真的效率。Code Morphing S
計算機工程與設計 2015年11期2015-12-23
- 利用智能控制流方法的嵌入式軟件故障檢測*
用變量的頻率和基本塊的執(zhí)行頻率用作選擇重要變量和基本塊的兩個參數(shù)。檢測的基本流程是首先過濾器還原標準C語句為偽代碼語句,然后掃描儀獲取偽代碼,并發(fā)送它到解析器,進行程序的控制流圖提取。最后,解析器提取程序的前后支配樹,運用候選塊尋找算法進行節(jié)點分類,獲得塊斷言和變量。實驗結(jié)果表明,固化代碼中程序執(zhí)行時間少于RSCFC方法,但是內(nèi)存開銷和代碼開銷幾乎相同,執(zhí)行時間比率接近1,顯著提高故障檢測率。嵌入式軟件;智能選擇;控制流;內(nèi)核塊;基本塊0 引言嵌入式系統(tǒng)[
電子技術應用 2015年10期2015-12-16
- 二進制代碼級的密碼算法循環(huán)特征識別
反匯編結(jié)果中,基本塊是單入口、單出口的連續(xù)指令序列,基本塊循環(huán) (基本塊自身所構(gòu)成的循環(huán))和基本塊嵌套循環(huán)是典型的控制循環(huán)模式,常常出現(xiàn)在分組密碼、公鑰密碼和流密碼的實現(xiàn)代碼中;為了提高執(zhí)行效率,Hash函數(shù)通常采用加密主函數(shù)循環(huán)展開的方式,構(gòu)造成為一個大基本塊,簡單循環(huán)模式則蘊藏在其中;此外,在對二進制目標代碼進行動態(tài)分析過程中,通常對記錄下的執(zhí)行指令序列進行分析,抽取出基本塊循環(huán)和嵌套循環(huán)等密碼算法常用的循環(huán)模式。密碼算法常用的兩種循環(huán)結(jié)構(gòu)如圖1所示,
計算機工程與設計 2014年8期2014-11-30
- 基于執(zhí)行路徑的嵌入式計量軟件后門檢測
度的指令,或者基本塊、函數(shù)等。執(zhí)行語句按照執(zhí)行順序組成的語句序列稱為路徑。在本文的檢測方法中,記錄執(zhí)行路徑以條件轉(zhuǎn)移指令劃分的基本塊為記錄單位,基本塊內(nèi)為順序執(zhí)行的不可分割的指令序列。2)起始路徑。起始于語句I1的執(zhí)行路徑為起始路徑。本文檢測方法中的起始路徑為二進制可執(zhí)行程序加載執(zhí)行后的初始化執(zhí)行過程,每一條執(zhí)行路徑都以程序初始化為起點,由于初始化過程相同,本文從初始化完成后的執(zhí)行路徑開始記錄。3)原子路徑。如果執(zhí)行路徑P由連續(xù)執(zhí)行不可分的語句序列P0組成
湖北工業(yè)大學學報 2014年1期2014-10-13
- 基于覆蓋率分析的僵尸網(wǎng)絡控制命令發(fā)掘方法
1 執(zhí)行軌跡的基本塊覆蓋3.1.1 執(zhí)行軌跡與路徑空間執(zhí)行軌跡是僵尸程序路徑空間中一條路徑的執(zhí)行過程的詳細記錄,其中記錄了執(zhí)行過程中CPU所執(zhí)行過的每一條指令、指令執(zhí)行前后的 CPU標志位狀態(tài)、與指令相關的寄存器和內(nèi)存等。執(zhí)行軌跡中雖然缺乏高級語言源代碼中的結(jié)構(gòu)信息、類型信息等,但是它詳細記錄了高級語言中各種算法、數(shù)據(jù)結(jié)構(gòu)、邏輯關系在 CPU上用二進制機器代碼的具體實現(xiàn)過程,是程序語義的二進制表示,其中就包含了程序內(nèi)在的控制邏輯關系。執(zhí)行軌跡的獲取通常是使
通信學報 2014年1期2014-09-18
- 基于特征字符串動態(tài)引用頻率的庫引用識別
公共子樹;基于基本塊的識別技術[7],在無壓縮、混淆的情況下忽略控制流程圖邊得到的基本塊集合的編輯距離識別函數(shù)的相似性;基于API調(diào)用序列的識別技術[8-9],文獻[8]通過每個函數(shù)k深度的API調(diào)用組成一個集合,函數(shù)的相似性利用API調(diào)用的個數(shù)占通常的API函數(shù)的比率進行識別,程序的相似性識別通過函數(shù)相似性矩陣進行測量,文獻[9]通過動態(tài)API的調(diào)用及其頻數(shù)構(gòu)建序列集合作為程序胎記;基于控制流程圖的識別技術[10-13],文獻[10]通過函數(shù)控制流程圖中
計算機工程與應用 2014年18期2014-04-03
- 基于字的分布表征的漢語基本塊識別
系中提出了漢語基本塊、多詞塊和功能塊3種塊。周強構(gòu)建了相應語料,并設置了漢語基本塊等自動識別任務,開發(fā)了自動分析工具。周強構(gòu)建的第一個基于規(guī)則的漢語基本塊分析器[2],在其測試集上F值達到89.47%。不過,該基本塊分析器十分依賴于漢語句子的分詞和詞性標注性能。后來,宇航等[3]使用條件隨機場模型構(gòu)建了一個漢語基本塊標注模型,模型的F值達到89.54%。在周強組織的漢語基本塊分析評測CIPS-Pars-Eval-2009中,基本塊自動識別的最好結(jié)果為F值[
中文信息學報 2014年6期2014-02-28
- 快速生成兩兩組合測試用例集算法
覆蓋表作為一個基本塊,記為B(0,1).對任意的 a,b(a<b),記 B(a,b)為把基本塊B(0,1)中的0置換成a,1置換成b得到的新基本塊.這樣把所有的基本塊B(i,j)(0≤i<j≤v-1)上下累加起來就構(gòu)成了兩兩組合覆蓋表.然而這種構(gòu)造出來的覆蓋表有很多冗余行,比如所有因素取值都為0的行有v-1行,為了消除這些冗余,需再引入另外的約簡塊 R(0,1).在二元待測系統(tǒng)中,構(gòu)造另外一個表,使得表中任取 i,j兩列,(0,1)與(1,0)組合都至少在
東南大學學報(自然科學版) 2011年5期2011-08-24
- C++反編譯中控制流圖優(yōu)化方法研究
圖中的圓圈表示基本塊。圖1 3種典型的控制流結(jié)構(gòu)Fig.1 Three kinds of typical control flow structures傳統(tǒng)的劃分控制流圖的方法是:將匯編指令分為兩類,轉(zhuǎn)移指令和非轉(zhuǎn)移指令。轉(zhuǎn)移指令是一些指令的集合,這些指令把指令執(zhí)行流(即IP寄存器的值)轉(zhuǎn)移到內(nèi)存中不同于下一條指令地址的地址。這些指令有:無條件跳轉(zhuǎn)(jmp),條件跳轉(zhuǎn)(jnb,je,jbe 等),子程序調(diào)用(call),子程序返回(ret)。除去這些指令外
電子設計工程 2011年21期2011-06-05
- 改進的CFCSS控制流檢測算法
題,修改了基礎基本塊的選擇方法和多調(diào)整簽名值賦值語句的插入位置,提出了改進的ICFCSS算法(improved CFCSS).1 控制流圖與基本塊為了方便描述控制流檢測算法,在此引入幾個定義.定義1 控制流圖(control flow graph,CFG)可表示為G={V,E},V={vi|vi為控制流基本塊,1≤i≤n,n為控制流基本塊號},E={(vi,vj)|表示控制流從vi跳轉(zhuǎn)到vj,vi為源基本塊,vj為目的基本塊}.定義2 e-(vi)為基本塊
哈爾濱工程大學學報 2011年6期2011-04-13
- 篡改定位精度可動態(tài)調(diào)整的無損圖像認證算法*
夠被識別的規(guī)則基本塊(BBi;i=1,2,…,m),BBi的大小由所采用的無損水印算法和認證塊中需嵌入的認證信息量等綜合確定;m個BBi根據(jù)某種相鄰合并規(guī)則動態(tài)生成n個圖像認證塊(ABj;j=1,2,…,n).在劃分基本塊和認證塊過程中必須滿足以下基本要求:(4)為提高篡改定位能力,一般要求圖像認證塊具有盡可能小的平均面積.實際設計認證塊劃分算法時應權衡篡改定位能力和算法的復雜度.(5)圖像中的BBi、ABj能以某種方式在認證端被準確地識別.圖1給出了LI
華南理工大學學報(自然科學版) 2011年7期2011-03-21
- Metric多核子方法劃分編譯算法設計與實現(xiàn)
lice由多個基本塊組成.如圖2中陰影所示,編譯鏈完成為:函數(shù)識別與cfg調(diào)整、訪存指令收集、slice劃分、訪存指令局部性年齡編碼建立、slice數(shù)據(jù)流化與優(yōu)化,以及slice管理等功能.函數(shù)識別將函數(shù)區(qū)分為庫函數(shù)與用戶自定義函數(shù)2種,并分別進行不同處理.之后,生成函數(shù)調(diào)用圖(call graph),并根據(jù)函數(shù)調(diào)用圖進一步將用戶定義函數(shù)分為2種情況:被庫調(diào)用和不被庫調(diào)用.被庫調(diào)用的用戶自定義函數(shù),仍然被標記為“系統(tǒng)”,采用系統(tǒng)庫的處理方式;不被庫調(diào)用的用
哈爾濱工業(yè)大學學報 2011年7期2011-03-14
- 異構(gòu)多機器人環(huán)境下的二進制翻譯系統(tǒng)
示。二進制代碼基本塊(Basic Block)是動態(tài)二進制翻譯系統(tǒng)中,進行代碼翻譯的基本單位,即一段翻譯后代碼片段(Translated Code Segment,TCS)所對應的源結(jié)構(gòu)指令片段。動態(tài)二進制翻譯中,執(zhí)行一個基本塊所用的時間開銷分析可以用等式(1)表示。其中 linked代表基本塊鏈接的比率,lookup time是查找 SPC-TPC map表的時間。圖1 動態(tài)二進制翻譯工作流程圖通過對進程級虛擬機CrossBit[2]的SPEC2000測
微型電腦應用 2010年2期2010-07-25
- 一種基于動態(tài)二進制翻譯的硬件支持Profile技術
地址。然后,以基本塊為單位劃分程序,一個基本塊通常以一條跳轉(zhuǎn)指令或系統(tǒng)調(diào)用指令所指向地址的指令為開始,以下一條跳轉(zhuǎn)指令為結(jié)束。完成基本塊的劃分之后,在每個基本塊中插入一條目標體系結(jié)構(gòu)的存儲指令。其中,源寄存器域的值為裝載每個基本塊首地址源體系結(jié)構(gòu)程序計數(shù)器值的本地寄存器號,地址寄存器域的值為裝載有緩沖區(qū)模塊首地址值的寄存器號,偏移量的值為零。具體在基本塊的什么位置插入儲存指令是由CrossBit在獲得了裝載有基本塊的首地址源體系結(jié)構(gòu)程序計數(shù)器值的寄存器號后
微型電腦應用 2010年5期2010-07-25
- 漢語塊分析評測任務設計
注(任務1)、基本塊分析(任務2)、功能塊分析(任務3)、事件描述小句識別(任務4)和句法樹分析(任務5)。其中3項(任務2~4)涉及漢語文本的塊分析問題。本文將對有關內(nèi)容進行具體介紹和說明。2 塊分析任務設計本次評測設計了以下3項塊分析子任務:1)基本塊分析; 2)功能塊分析; 3)事件描述小句識別。其處理要點是對經(jīng)過正確詞語切分和詞性標注處理的漢語句子自動分析形成不同層次的塊標注序列。對每個子任務,都可以使用以下兩種開發(fā)模式:1)封閉學習,即只使用訓練
中文信息學報 2010年1期2010-06-05