核心概念
本文提出了一種名為 IRBinDiff 的新型二進制代碼相似性檢測方法,該方法利用中間表示法(LLVM-IR)和圖對比學習技術,有效地解決了複雜編譯選項和海量候選函數檢索帶來的挑戰。
摘要
IRBinDiff: 基於中間表示法的圖對比學習進行二進制代碼相似性檢測
研究目標
本研究旨在解決二進制代碼相似性檢測(BCSD)在實際應用中面臨的挑戰,特別是複雜編譯選項和海量候選函數檢索問題。
方法
本研究提出了一種名為 IRBinDiff 的新型 BCSD 方法,該方法基於中間表示法(LLVM-IR)和圖對比學習技術。具體而言,IRBinDiff 包含以下步驟:
- 數據預處理: 將二進制代碼提升至 LLVM-IR,提取控制流程圖,並簡化指令序列。
- 語言模型預訓練: 使用預訓練的語言模型(BERT)學習 LLVM-IR 指令的語義和語法模式。
- 圖動量對比學習: 使用門控圖神經網絡(GGNN)編碼控制流程圖,並利用動量對比學習技術增強模型在海量候選函數中區分細微語義差異的能力。
- 相似性檢測: 使用餘弦距離計算函數嵌入向量之間的相似性,以確定兩個函數是否相似。
主要發現
實驗結果表明,IRBinDiff 在各種編譯選項和搜索場景下均優於現有的 BCSD 方法。具體而言,IRBinDiff 在以下方面表現出色:
- 跨編譯器、跨優化級別和跨架構的二進制代碼相似性檢測: IRBinDiff 能夠有效地處理由不同編譯器、優化級別和目標架構引起的差異。
- 海量候選函數檢索: IRBinDiff 的動量對比學習組件使其能夠在海量候選函數中準確地識別相似的函數。
主要結論
IRBinDiff 是一種強大且實用的 BCSD 方法,能夠有效地解決實際應用中面臨的挑戰。
意義
本研究為 BCSD 提供了一種新的研究思路,並為實際應用(如漏洞檢測、惡意軟件分析和代碼重用識別)提供了有效的解決方案。
局限性和未來研究方向
- IRBinDiff 目前尚未考慮代碼混淆技術的影響。
- 本研究使用的數據集可能無法涵蓋所有可能的應用場景。
- IRBinDiff 的整體性能部分取決於 LLVM-IR 的生成和預處理效率。
統計資料
IRBinDiff 在最困難的跨編譯器、跨優化級別和跨架構任務(XC+XO+XA)中獲得了 0.935 的 AUC 分數,而表現次佳的 Gemini 獲得了 0.924 的 AUC 分數。
在非平衡測試集中,IRBinDiff 的平均 AUC 分數比 Zeek、Gemini、SAFE、GMN 和 Trex 分別提高了 2.1%、1.6%、5.6%、30.8% 和 0.8%。
在一對多搜索場景中,IRBinDiff 在七項任務中 Recall@1 的平均相對改進幅度在 75.7% 到 185% 之間。
在最具挑戰性的 XC+XA+XO 任務中,IRBinDiff 的 Recall@1 分數相對提高了 185%。