挖漏洞項目實戰(zhàn)課
? ?通過機器學(xué)習(xí)來發(fā)現(xiàn)源碼中的漏洞,首先得解決一個問題——如何將源碼中漏洞的口頭描述表示成為能夠搜索的模式。此時需要對源代碼做語法分析,控制流分析及數(shù)據(jù)流分析。通過語法分析使得理解整個代碼的基本組織結(jié)構(gòu);通過控制流分析使得理解程序代碼執(zhí)行的順序,以及它的執(zhí)行路徑有哪些;通過數(shù)據(jù)流分析使得理解代碼怎么處理其中的數(shù)據(jù)。
????通過以上分析將分別得到抽象語法樹(AST, Abstract Syntax Tree),控制流圖(CFG, Control Flow Graph),程序依賴圖(PDG,Program Dependence Graph)。AST是由編譯器的代碼解析器生成的第一個中間表示形式,它構(gòu)成了生成許多其他代碼表示的基礎(chǔ);CFG顯示地表示源碼中語句執(zhí)行的順序以及程序中滿足特定路徑執(zhí)行的條件分支;PDG用于確定程序中影響指定語
標簽: