流敏感,路徑敏感和上下文敏感

2021-07-15 22:21:27 字數 773 閱讀 8380

這篇日誌沒有什麼技術含量,只是總結幾個基本概念。在軟體分析中,我們經常會遇到流敏感(flow-sensitive),路徑敏感(path-sensitive)和上下文敏感(context-sensitive),這幾個概念都主要出現在data flow analysis中(或data flow的變型,如taint analysis等)。

流敏感(flow-sensitive):指的是考慮程式語句執行的順序,例如在資料流分析中的指標別名(pointer alias)分析中,乙個非流敏感指標別名分析可能得出「變數x和y可能會指向同一位置」,而流敏感指標別名分析得出的結論類似於「在執行第20條指令後,變數x和y可能會指向同一位置」 。所以,乙個非流敏感指標別名分析不考慮控制流,並認為所發現的別名在程式所有位置均成立。

路徑敏感(path-sensitive):指的是依據條件分支語句的不同謂詞,計算不同的分析資訊,也就是說,路徑敏感將跟蹤程式控制流的每乙個分支,以記錄兩個分支路徑的不同程式狀態。相應的,非路徑敏感並不考慮分支之間的區別。簡單的路徑敏感存在「路徑**」(path explosion)或「無窮搜尋空間」(infinite search space)的問題。

上下文敏感(context-sensitive):指的是在過程間分析(interprocedural analysis)時,考慮函式呼叫的上下文資訊。乙個子過程或函式可能會被多個過程呼叫,那麼在不同的過程呼叫它的時候,對於傳給它的實際引數或當時的全域性變數有可能會不同,這些被稱之為上下文,上下文敏感是考慮了這些不同

路徑敏感模糊

collafl path sensitive fuzzing 本篇文章主要講的是一種模糊測試的方法叫做路徑模糊測試,它的名字叫collafl afl全稱 american fuzzy lop,它是開發的一款基於覆蓋引導也就是coverage guided的模糊測試工具,通過記錄輸入樣本的 覆蓋率,從...

程序上下文和中斷上下文

程序上下文和中斷上下文是作業系統中很重要的兩個概念,這兩個概念在作業系統課程中不斷被提及,是最經常接觸 看上去很懂但又說不清楚到底怎麼回事。造成這種局面的原因,可能是原來接觸到的作業系統課程的教學總停留在一種淺層次的理論層面上,沒有深入去研究。處理器總處於以下狀態中的一種 核心態,執行於程序上下文,...

程序上下文和中斷上下文

程序上下文是一種核心所處的操作模式,此時核心代表程序執行 例如執行系統呼叫或執行核心執行緒。上下文context 上下文簡單說來就是乙個環境,相對於程序而言,就是程序執行時的環境。具體來說就是各個變數和資料,包括所有的暫存器變數 程序開啟的檔案 記憶體資訊等。乙個程序的上下文可以分為三個部分 使用者...