System.ArgumentOutOfRangeException: 索引和長度必須引用該字符串內的位置。 參數名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技術實現步驟摘要】
本專利技術涉及代碼分析,尤其涉及一種代碼可達性分析方法、裝置、電子設備、產品及存儲介質。
技術介紹
1、在現代軟件開發中,隨著面向對象編程語言的廣泛應用,編程語言中引入了許多高級特性,如繼承、多態、泛型等,這意味著程序越來越復雜,若沒有對這些高級特性進行深入的分析,可能導致在代碼存在潛在的安全風險和邏輯錯誤。現有技術通常依賴于控制流圖分析技術、數據流分析技術和符號執行分析技術等靜態分析技術來分析編程語言中的高級特性。
2、然而,這些現有技術也存在一定的缺陷。例如,控制流圖分析技術在處理多態和間接調用時精度較低;數據流分析技術難以應對復雜的引用關系,特別是動態類型和多態性;符號執行分析技術在路徑爆炸和狀態空間膨脹問題上,無法應對大規模項目的分析需求。由此可見,現有技術在面對現代編程語言中復雜的語言特性時,無法提供高精度、高效率的代碼可達性分析,進而可能導致程序中存在的潛在漏洞無法被及時發現。
技術實現思路
1、本專利技術提供一種代碼可達性分析方法、裝置、電子設備、產品及存儲介質,用以解決現有技術在面對現代編程語言中復雜的語言特性時,無法提供高精度、高效率的代碼可達性分析的缺陷。
2、本專利技術提供一種代碼可達性分析方法,包括:
3、獲取源代碼,將所述源代碼進行編譯,得到中間表達指令集;
4、從所述中間表達指令集中確定出函數指令集,將所述函數指令集中各函數指令的抽象變量名稱替換為實際類名,以得到具體化函數指令集;所述函數指令集中任一條函數
5、基于所述具體化函數指令集中各具體化函數指令的調用信息,得到具體化函數指令信息集,所述具體化函數指令信息集中任一條具體化函數指令信息表征所述源代碼中函數的執行邏輯及所述函數的調用信息;
6、基于所述具體化函數指令信息集中各具體化函數指令信息分別與預設危險函數指令信息集中各預設危險函數指令信息的匹配結果,確定所述源代碼中各函數的可達性。
7、根據本專利技術提供的一種代碼可達性分析方法,在所述基于所述具體化函數指令集中各具體化函數指令的調用信息,得到具體化函數指令信息集之前,所述方法包括:
8、基于所述具體化函數指令集中各具體化函數指令的類型信息和參數傳遞路徑,確定所述具體化函數指令集中各具體化函數指令的調用信息。
9、根據本專利技術提供的一種代碼可達性分析方法,所述具體化函數指令的類型信息包括本地函數類型、繼承函數類型或重載函數類型;所述具體化函數指令的調用信息包括獨立調用信息、繼承鏈調用信息或多態調用信息;
10、任一所述具體化函數指令的調用信息基于如下方式確定:
11、若所述具體化函數指令的類型信息為本地函數類型,則將所述具體化函數指令的調用信息確定為獨立調用信息;
12、若所述具體化函數指令的類型信息為繼承函數類型,則將所述具體化函數指令的調用信息確定為繼承鏈調用信息;
13、若所述具體化函數指令的類型信息為重載函數類型,則將所述具體化函數指令的調用信息確定為多態調用信息。
14、根據本專利技術提供的一種代碼可達性分析方法,在所述確定所述具體化函數指令集中各具體化函數指令的調用信息之后,所述方法還包括:
15、基于所述具體化函數指令集中各具體化函數指令的調用信息對所述具體化函數指令集中各具體化函數指令進行分類標記。
16、根據本專利技術提供的一種代碼可達性分析方法,所述基于所述具體化函數指令信息集中各具體化函數指令信息分別與預設危險函數指令信息集中各預設危險函數指令信息的匹配結果,確定所述源代碼中各函數的可達性,包括:
17、若所述具體化函數指令信息集中的具體化函數指令信息與預設危險函數指令信息集中的預設危險函數指令信息匹配成功,則確定出待分析的具體化函數指令信息;
18、對所述待分析的具體化函數指令信息進行分析,得到可達性分析結果;
19、其中,所述可達性分析結果用于確定所述待分析的具體化函數指令信息在所述源代碼中所表征的函數的可達性。
20、根據本專利技術提供的一種代碼可達性分析方法,所述可達性分析結果包括所述待分析的具體化函數指令信息在所述源代碼中所表征的函數的位置信息、執行邏輯風險提示和調用信息風險提示。
21、本專利技術還提供一種代碼可達性分析裝置,包括:
22、編譯模塊,其用于獲取源代碼,將所述源代碼進行編譯,得到中間表達指令集;
23、具體化函數指令集確定模塊,其用于從所述中間表達指令集中確定出函數指令集,將所述函數指令集中各函數指令的抽象變量名稱替換為實際類名,以得到具體化函數指令集;所述函數指令集中任一條函數指令表征所述源代碼中函數的執行邏輯;
24、具體化函數指令信息集確定模塊,其用于基于所述具體化函數指令集中各具體化函數指令的調用信息,得到具體化函數指令信息集,所述具體化函數指令信息集中任一條具體化函數指令信息表征所述源代碼中函數的執行邏輯及所述函數的調用信息;
25、可達性分析模塊,其用于基于所述具體化函數指令信息集中各具體化函數指令信息分別與預設危險函數指令信息集中各預設危險函數指令信息的匹配結果,確定所述源代碼中各函數的可達性。
26、本專利技術還提供一種電子設備,包括存儲器、處理器及存儲在存儲器上并可在處理器上運行的計算機程序,所述處理器執行所述計算機程序時實現如上述任一種所述代碼可達性分析方法。
27、本專利技術還提供一種非暫態計算機可讀存儲介質,其上存儲有計算機程序,該計算機程序被處理器執行時實現如上述任一種所述代碼可達性分析方法。
28、本專利技術還提供一種計算機程序產品,包括計算機程序,所述計算機程序被處理器執行時實現如上述任一種所述代碼可達性分析方法。
29、本專利技術提供的代碼可達性分析方法、裝置、電子設備、產品及存儲介質,所述方法包括獲取源代碼,將所述源代碼進行編譯,得到中間表達指令集;從所述中間表達指令集中確定出函數指令集,將所述函數指令集中各函數指令的抽象變量名稱替換為實際類名,以得到具體化函數指令集;所述函數指令集中任一條函數指令表征所述源代碼中函數的執行邏輯;基于所述具體化函數指令集中各具體化函數指令的調用信息,得到具體化函數指令信息集,所述具體化函數指令信息集中任一條具體化函數指令信息表征所述源代碼中函數的執行邏輯及所述函數的調用信息;基于所述具體化函數指令信息集中各具體化函數指令信息分別與預設危險函數指令信息集中各預設危險函數指令信息的匹配結果,確定所述源代碼中各函數的可達性。本專利技術通過引入中間表達技術,將復雜的代碼結構轉化為便于分析的中間層數據結構,針對現有代碼可達性分析技術在處理現代編程語言高級特性時精度不足的問題,提供了有效解決方案。具體而言,本專利技術通過將中間表達中的函數指令集具體化,即將各函數指令的抽象變量名稱替換為實際類名,消除了由動態類型和多態性引發的不確定性,明確了函數的實際調本文檔來自技高網...
【技術保護點】
1.一種代碼可達性分析方法,其特征在于,包括:
2.根據權利要求1所述的代碼可達性分析方法,其特征在于,在所述基于所述具體化函數指令集中各具體化函數指令的調用信息,得到具體化函數指令信息集之前,所述方法包括:
3.根據權利要求2所述的代碼可達性分析方法,其特征在于,所述具體化函數指令的類型信息包括本地函數類型、繼承函數類型或重載函數類型;所述具體化函數指令的調用信息包括獨立調用信息、繼承鏈調用信息或多態調用信息;
4.根據權利要求2所述的代碼可達性分析方法,其特征在于,在所述確定所述具體化函數指令集中各具體化函數指令的調用信息之后,所述方法還包括:
5.根據權利要求1所述的代碼可達性分析方法,其特征在于,所述基于所述具體化函數指令信息集中各具體化函數指令信息分別與預設危險函數指令信息集中各預設危險函數指令信息的匹配結果,確定所述源代碼中各函數的可達性,包括:
6.根據權利要求5所述的代碼可達性分析方法,其特征在于,所述可達性分析結果包括所述待分析的具體化函數指令信息在所述源代碼中所表征的函數的位置信息、執行邏輯風險提示和
7.一種代碼可達性分析裝置,其特征在于,包括:
8.一種電子設備,包括存儲器、處理器及存儲在所述存儲器上并在所述處理器上運行的計算機程序,其特征在于,所述處理器執行所述計算機程序時實現如權利要求1至6任一項所述的代碼可達性分析方法。
9.一種非暫態計算機可讀存儲介質,其上存儲有計算機程序,其特征在于,所述計算機程序被處理器執行時實現如權利要求1至6任一項所述的代碼可達性分析方法。
10.一種計算機程序產品,包括計算機程序,其特征在于,所述計算機程序被處理器執行時實現如權利要求1至6任一項所述的代碼可達性分析方法。
...【技術特征摘要】
1.一種代碼可達性分析方法,其特征在于,包括:
2.根據權利要求1所述的代碼可達性分析方法,其特征在于,在所述基于所述具體化函數指令集中各具體化函數指令的調用信息,得到具體化函數指令信息集之前,所述方法包括:
3.根據權利要求2所述的代碼可達性分析方法,其特征在于,所述具體化函數指令的類型信息包括本地函數類型、繼承函數類型或重載函數類型;所述具體化函數指令的調用信息包括獨立調用信息、繼承鏈調用信息或多態調用信息;
4.根據權利要求2所述的代碼可達性分析方法,其特征在于,在所述確定所述具體化函數指令集中各具體化函數指令的調用信息之后,所述方法還包括:
5.根據權利要求1所述的代碼可達性分析方法,其特征在于,所述基于所述具體化函數指令信息集中各具體化函數指令信息分別與預設危險函數指令信息集中各預設危險函數指令信息的匹配結果,確定所述源代...
【專利技術屬性】
技術研發人員:屈晟,陳馳皓,武延軍,
申請(專利權)人:中國科學院軟件研究所,
類型:發明
國別省市:
還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。