色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

探討一下基于符號抽象的程序分析

jf_glM2sZ6i ? 來源:編程語言Lab ? 2022-12-30 14:29 ? 次閱讀

軟件已經無處不在,軟件質量問題也越來越普遍,其造成的系統崩潰、安全漏洞等可能帶來經濟上的損失,甚至威脅我們的生命。程序分析是保障軟件質量的基礎技術和重要手段,已被廣泛應用于提高軟件的可靠性、安全性、性能等多個維度的質量。

今天,我們探討一類特殊的程序分析方法,基于符號抽象的程序分析。首先我會簡單回顧一下 抽象解釋 —— 靜態分析的核心理論。抽象解釋的核心問題之一是,計算程序狀態在給定抽象域內的最佳抽象。針對這個問題,我會介紹符號抽象框架以及幾個和符號抽象有關的其他話題

# 抽象解釋 #

抽象解釋是靜態分析的核心理論 [1],其關鍵想法是對程序的可達狀態做一個上近似。

如下圖,假設左邊的黃色橢圓代表程序的可達狀態 Reachable States,右邊的黃色橢圓代表有缺陷的狀態 Bad States。我們想驗證這個程序是否有缺陷,即 Reachable States 是否可能和 Bad States 相交。

a5766db4-77bf-11ed-8abf-dac502259ad0.png

靜態分析可以對程序的可達狀態做推理,比如算出一個紅色區域。最終紅色區域可以完全覆蓋左邊的黃色區域,因此我們得到了一個上近似。而且我們看到左邊紅色區域和 Bad States 并不相交,因此我們成功地驗證了這個程序是安全的。

# 1.1 抽象解釋的應用

過去 20 多年來,抽象解釋在工業界得到了很多應用,以下三個可能是比較有代表性的。

第一個是 Astrée,基于數值域抽象解釋,已經成功用于驗證航空航天等安全攸關場景的軟件。

第二個是 TVLA,主要做形態分析,比如驗證垃圾回收算法是否真的回收了內存垃圾。TVLA 把形態分析這個概念給發揚光大了,啟發了很多后續工作,比如基于分離邏輯的形態分析。

第三個是 CodeSurfer/x86,它提出的 Value Set Analysis (VSA) 已經成為了二進制靜態分析框架的標配。

a5897e04-77bf-11ed-8abf-dac502259ad0.png

此外,抽象解釋在學術領域也獲得多個榮譽,包括 2013 年 SIGPLAN 的程序語言成就獎, 2018 年的約翰·馮諾依曼獎等。

# 1.2 抽象域及其要素

抽象解釋會通過抽象域來對程序的狀態做數學近似,比如數值域、堆域、字符串域等。其中,數值域可以用來捕捉程序的數值信息,用于查找不同的程序缺陷,包括除零錯誤、整數溢出等。

a5c1dbe6-77bf-11ed-8abf-dac502259ad0.png

a5d2ccee-77bf-11ed-8abf-dac502259ad0.png

由于抽象解釋是對程序的可達狀態做上近似,它往往伴隨著一些精度問題。比如我們再次看這個圖,右邊的黃色區 Bad States 和紅色區域 (靜態分析的結果) 是相交的,但事實上 Bad States 和左邊的黃色區域 Reachable States 并不相交,因此我們的靜態分析存在誤報。

a5e4635a-77bf-11ed-8abf-dac502259ad0.png

# 1.3 最佳抽象

給定一個抽象域比如區間域,怎么計算程序在該抽象域上的、最精確的上近似呢?事實上,這也是抽象解釋理論的一個核心問題:給定一個具體遷移函數 以及抽象域 ,如何得到 在 上的最佳抽象 (最精確的抽象遷移函數)?

抽象解釋理論對 有一個聲明式的定義,但是這個定義是“非構造性”的。通常我們沒有自動化的算法,去應用最佳抽象遷移函數 ,或者去得到 的一個表示。

最佳抽象的形式化定義:

a5f9f9fe-77bf-11ed-8abf-dac502259ad0.png

# 符號抽象框架 #

為了解決以上問題,研究人員提出了符號抽象框架

# 2.1 框架定義和實例

假設我們用邏輯約束φ來編碼一個程序的具體狀態,并且把抽象域看作一個比較受限的邏輯片段 (比如“區間邏輯”)。符號抽象的目標就是找到約束φ 在抽象域上的、最精確的上近似[2]。

a625c764-77bf-11ed-8abf-dac502259ad0.png

我們也可以從邏輯的角度來理解 [3]。給定一個約束φ和一個邏輯片段(對應于抽象域), 找到約束φ在中的最強邏輯后承 (strongest logical consequence)。

a6525978-77bf-11ed-8abf-dac502259ad0.png

下面是一個具體的例子:

考慮約束 φ,其中是整數變量。這個約束有四個可行解。我們可以一眼看出,約束φ在區間域的最佳近似是。但是,在一般情況下,我們應如何計算出一個約束的最佳區間近似呢?這就是符號抽象需要解決的問題。

a67935fc-77bf-11ed-8abf-dac502259ad0.png

# 2.2 框架意義和應用

通常,為了實現一個靜態分析器,我們需要建模不同的程序指令 (比如加減乘除),為其設計不同的抽象遷移函數、并將這些遷移函數組合起來。而使用符號抽象框架后,我們就可以用一個約束來精確編碼一整塊代碼,并且自動得到對于該代碼的最精確近似。

a68eb5f8-77bf-11ed-8abf-dac502259ad0.png

符號抽象的理論和實際意義

然而,由于符號抽象的性能問題,目前在真實的靜態分析器中很少得到應用。當前的少量應用主要包括兩塊。

一是上層源代碼的驗證分析,包括數值屬性、堆屬性等的驗證。對于數值驗證,國防科大的陳立前教授就有相關工作 [4]。目前這些工作主要面向一些相對小規模的程序驗證。

a6a8080a-77bf-11ed-8abf-dac502259ad0.png

其次是二進制分析,比如做控制流恢復 control flow recovery 等。在歐洲有幾個團隊一直有做相關的工作,GrammaTech 甚至已經將符號抽象用到二進制分析產品中。

a6c0d3c6-77bf-11ed-8abf-dac502259ad0.png

但即便有工業級應用,符號抽象在形式化、編程語言、甚至抽象解釋社區也都還不夠普及。

# 延伸思考 #

下面分享一些引申思考。回到符號抽象的定義: 是表達力豐富的邏輯,抽象域 對應于 一個子集 。給定 ,找到它在 的最強邏輯后承。

其實計算機科學中的很多問題都跟這個問題相關,下面我們舉幾個例子。

第一個是謂詞抽象 predicate abstraction [5],它可以看作符號抽象的一個特殊實例。假設我們有一些謂詞集合

謂詞抽象的抽象域 就是 中命題的任意布爾組合,比如 。在用于程序驗證時,結合一些不動點迭代方式,我們還能算出 能表達的最強循環不變式。

a6dd62de-77bf-11ed-8abf-dac502259ad0.png

第二個是量詞消去 quantifier elimination。給定,假設抽象域是只使用特定約束變量集合的約束。那么,存在量詞消去existential quantifier elimination 的目標就是計算在中的最強邏輯后承。

a70bf8f6-77bf-11ed-8abf-dac502259ad0.png

第三個是人工智能里面的 Forgetting 問題 [6],和量詞消去問題類似。這是港科大 Fangzhen Lin 教授發明的概念,在邏輯 AI 領域很有名。

第四個是 線性規劃 問題,它也可以看作符號抽象問題的一個實例。 即線性約束集合, (其中, 是線性目標函數)。

個人認為符號抽象問題有超越靜態分析、編程語言,甚至超越計算機科學領域的意義,具有深遠的理論蘊含。而且針對相關問題的算法也有一些共通性,比如基于模型的泛化等。

# 總結與展望 #

最后,我們一起從 程序合成 的視角來理解符號抽象 (程序合成是指如何自動從規約中生成程序)。那么,回顧今天的主題,我們的規約是什么?我們應如何從這個規約中生成靜態分析器呢?

a73f05de-77bf-11ed-8abf-dac502259ad0.png

a74ffd62-77bf-11ed-8abf-dac502259ad0.png




審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • VSA
    VSA
    +關注

    關注

    0

    文章

    12

    瀏覽量

    10783
  • 分析器
    +關注

    關注

    0

    文章

    92

    瀏覽量

    12492

原文標題:基于符號抽象的程序分析

文章出處:【微信號:編程語言Lab,微信公眾號:編程語言Lab】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    請教一下這個符號是什么

    請教一下這個符號是什么呀?由于很少使用這個符號,同時在multisim12的庫中沒有找到這個元件。
    發表于 06-13 12:37

    探討一下,CRC校驗的優勢

    本帖最后由 ntmusic 于 2014-6-11 11:31 編輯 探討一下,使用計算的2字節的CRC校驗碼和使用固定的2字節數據作為校驗在保證數據傳輸正確方面有什么不同?
    發表于 06-11 11:21

    電器符號誰幫我解釋一下

    本帖最后由 yangkel2013 于 2015-1-9 12:51 編輯 我這邊有本電路圖,是英國進口的拌合站的電器圖,有些電氣符號不明白,誰能幫我解釋說明一下,先汗顏一下,我是新手FAR
    發表于 01-09 12:32

    麻煩大佬看一下電路模塊的符號代表什么?

    小白想請大佬看一下電路模塊的符號代表什么?
    發表于 06-22 07:06

    菜鳥想問一下怎么用個模型生成個器件符號啊?

    想問一下怎么用個模型生成個器件符號啊?
    發表于 06-25 06:58

    探討一下深度學習在嵌入式設備上的應用

    下面來探討一下深度學習在嵌入式設備上的應用,具體如下:1、深度學習的概念源于人工神經網絡的研究,包含多個隱層的多層感知器(MLP) 是種原始的深度學習結構。深度學習通過組合低層特征形成更加
    發表于 10-27 08:02

    分析探討

    分析探討 首先提一下分析的概念哈,我們可以用各種手段完成,包括仿真軟件,手算,實際測試等等,器件發熱會導致很多問題:1.半導體
    發表于 11-21 14:07 ?793次閱讀

    按鈕控制LED程序(按亮再按一下滅)【匯編版】

    按鈕控制LED程序(按亮再按一下滅)【匯編版】按鈕控制LED程序(按亮再按一下滅)【匯編版】
    發表于 12-29 11:04 ?0次下載

    分析java接口和抽象類區別

    抽象類 二。接口 三。抽象類和接口的區別 抽象類 在了解抽象類之前,先來了解
    發表于 09-27 16:40 ?0次下載

    通過抽象程序證明復雜具體程序

    描述了證明抽象程序和具體程序滿足致性關系的方法.抽象程序使用
    發表于 12-29 16:17 ?0次下載
    通過<b class='flag-5'>抽象</b><b class='flag-5'>程序</b>證明復雜具體<b class='flag-5'>程序</b>

    電動車的核心動力來源電池的成本大家起來探討一下

    這幾年在全球汽車圈電動車著實已經火了很長時間。作為電動車的核心動力來源電池也是大家經常討論的個話題,但這個核心部件的成本分析卻不多見,希望本文能夠拋磚引玉,吸引大家起來探討
    的頭像 發表于 07-08 16:23 ?5656次閱讀

    電磁爐加熱一下就停一下什么原因

    電磁爐加熱一下就停一下什么原因。
    的頭像 發表于 06-04 10:01 ?3.8w次閱讀

    詳細分析Verilog編寫程序測試無符號數和有符號數的乘法

    符號數的計算在 Verilog 中是個很重要的問題(也很容易會被忽視),在使用 Verilog 語言編寫 FIR 濾波器時,需要涉及到有符號數的加法和乘法,在之前的程序中我把所有的
    的頭像 發表于 05-02 10:48 ?7503次閱讀
    詳細<b class='flag-5'>分析</b>Verilog編寫<b class='flag-5'>程序</b>測試無<b class='flag-5'>符號</b>數和有<b class='flag-5'>符號</b>數的乘法

    芯片設計抽象層及其設計風格

    在了解Verilog語言的更多細節之前,我們最好先了解一下芯片設計中的不同抽象層。
    發表于 11-05 15:51 ?12次下載
    芯片設計<b class='flag-5'>抽象</b>層及其設計風格

    分析一下SR鎖存器的原理

    作為電路設計者,鎖存器很多場合都會用到,今天和大家分析一下SR鎖存器的原理。
    的頭像 發表于 08-20 17:30 ?6881次閱讀
    <b class='flag-5'>分析</b><b class='flag-5'>一下</b>SR鎖存器的原理
    主站蜘蛛池模板: 99九九99九九九视频精品| 色妹子综合| 久久国产乱子伦免费精品| 国产成人精品综合在线观看| 99这里有精品视频视频| 在线看片成人免费视频| 亚洲日韩国产成网站在线| 亚洲国产成人久久精品影视| 小p孩玩成年女性啪啪资源| 射死你天天日| 熟妇的味道HD中文字幕| 色综合久久中文色婷婷| 色综合久久五月| 视频一区在线免费观看| 双腿打开揉弄高潮H苏安安秦慕深 双腿被绑成M型调教PLAY照片 | 久久久免费热线精品频| 精品无码一区二区三区不卡| 精品高潮呻吟99AV无码| 精品视频久久久久| 久久麻豆国产国产AV| 美女胸禁止18以下看| 男子扒开美女尿口做羞羞的事| 嫩草国产福利视频一区二区| 欧美一级情欲片在线| 日韩精品在线看| 无遮掩H黄纯肉动漫在线观看星| 无限好资源免费观看| 亚洲国产精品嫩草影院| 国产AV无码成人黄网站免费| 春暖花开 性 欧洲| 国产高清视频免费在线观看| 国产精品看高国产精品不卡| 果冻传媒我的女老板| 久久有码中文字幕| 年轻的老师5理伦片| 日本一本二本三区免费免费高清| 久久国产乱子伦免费精品| 麻豆XXXX乱女少妇精品-百度| 免费女人光着全身网站| 伦理片在线线看手机版| 欧美日韩第一区|