程式靜態分析本質上只能解決什麼問題?

時間 2021-06-02 00:43:40

1樓:rhett

靜態分析,只能解決淺層的問題,也就是你能看得見的問題,侷限性還是很明顯的。在惡意檔案分析領域,稍微有點追求的樣本都不會讓你通過靜態的方法進行分析和識別。當然動態分析的問題也很明顯,主要是分支覆蓋和環境依賴。

所以,廢話來了,要動靜結合。

2樓:uv0xab

我認為要把這個問題說清楚,首先要搞明白靜態分析在這個語境下如何定義。比如,「符號執行」算不算執行?

我個人傾向於上面的答案是YES。如果基於這個答案的話,我可以聊一聊我心中靜態分析的邊界和動態分析的邊界。

首先說理論的邊界。

靜態分析能做什麼,首先要看你的分析演算法裡考慮了哪些模型。有沒有考慮硬體的記憶體序?有沒有考慮併發排程的策略,對策略做了何種假設?

有沒有考慮編譯器行為?……如果種種因素都被考慮了且建模了,那麼靜態分析,我認為它的理論邊界至少不小於動態分析。在無視算力且考慮了足夠多的模型的情況下,關於軟體行為的一切命題都可以由靜態分析來完成。

這裡我指的是比較廣義的靜態分析,包含形式化方法和抽象解釋等技術。

反過來說,我認為動態分析的理論是有邊界的。因為它涵蓋的行為永遠是軟體真是行為的真子集。因此動態分析無法保證分析結果的完備性(可能有問題無法被發現)。

當然,動態分析的結果是sound的(任何動態分析發現的問題都確實是實際問題),這是因為動態執行產生的行為不會超過軟體真實行為的集合本身。

那麼在實踐中的邊界呢?

以目前的算力和技術手段,靜態分析無法做到絕對的精確。即便考慮了所有的硬體,排程,編譯階段行為模型,現階段的大多數靜態分析工具仍然受制於兩個問題:

缺少部分先驗知識。程式設計師在寫很多程式的時候,腦海中是存在特定的不變式的,也就是說「這個資料結構總是應該如何如何」,而這些東西不會被直接編碼到程式中,

算力不足。

文學本質上是什麼?

好難受,路我走,已不可能再回頭,應天炮,忘憂草,明天早上說聲好,忍著笑,悲別離,太陽根本不不鳥我,曹尼瑪,陰天陣陣垂人眼,搞學習,搞學習,書到用時方恨少 舒緩情緒 艾姆沃夫 從理論上來說,普遍認可文學本質上是一種審美意識形態。從內容上來說,個人認為,文學歸根結底說的是人,本質上是對人生存境遇,情感訴...

權力本質上是什麼?

安靜地吹牛 乙個國家或組織很大 乙個人管不了,也不想管 所以劃分區域和方面成n個 再遞迴多次,得到小塊 權力主要就是三個方向分類 接受上級傳遞的命令向下傳遞並要求,將下級數值彙總向上報告,在本級產生想法判斷 數值 發起乙個命令,或設定本領域的一組資料權力就體現在調節這三個的大小與迴圈。 其他人的服從...

追星本質上是追什麼?

阿猹 追你內心的影子,追你想成為的自己。你喜歡某個明星不是因為他真的是那樣的,而是因為他表現出來的某個點戳中了你,然後你幻想他是那樣的人。所以你追的,其實是自己的幻想。自從醒悟了這一點後,我就再也不會真情實感的追星了,最大的程度也就是路人粉了,嘻嘻嘻。 每個人都是不一樣的吧。對我來說追星純粹是對乙個...