[發明專利]一種基于圖卷積神經網絡的C++抽象信息恢復方法有效
| 申請號: | 201911403402.5 | 申請日: | 2019-12-31 |
| 公開(公告)號: | CN111176623B | 公開(公告)日: | 2021-11-26 |
| 發明(設計)人: | 金舒原;王劍儒 | 申請(專利權)人: | 中山大學 |
| 主分類號: | G06F8/20 | 分類號: | G06F8/20;G06F8/41;G06N3/04;G06N3/08 |
| 代理公司: | 深圳市創富知識產權代理有限公司 44367 | 代理人: | 吳族平 |
| 地址: | 510275 廣東*** | 國省代碼: | 廣東;44 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 基于 圖卷 神經網絡 c++ 抽象 信息 恢復 方法 | ||
本發明公開了一種基于圖卷積神經網絡的C++抽象信息恢復方法,所述方法包括:首先使用二進制分析工具提取出基本事實,推理使用;對于確定性的規則,直接推理得出結論;對于步驟B不能確定的結論,使用圖卷積網絡處理得出結論;對于用圖卷積網絡處理得出的結論,再額外設置一致性檢查規則,若不能通過檢查,則需要再從步驟C中取出第二個結論再進行嘗試,直到可以通過推理得出一致性檢查為止。本發明有益效果在于,圖卷積神經網絡(GCN)可應用于圖的頂點的屬性預測,把假設推理的規則抽象成圖的頂點和邊,就可以使用圖卷積神經網絡的屬性預測代替Prolog的假設推理,從而達到更高的速度和準確率。
技術領域
本發明涉及網絡安全技術領域,特別涉及二進制可執行文件的逆向工程技術,具體的說,一種基于圖卷積神經網絡的C++抽象信息恢復方法。
背景技術
軟件逆向工程是研究閉源軟件行為的重要方式。通過逆向工程,我們可以恢復出閉源軟件中的一些算法、協議和應用程序接口,進而了解一個軟件內部是否包含惡意代碼或者是否存在漏洞。
C++是目前主流的面向對象編程語言之一,同時具有能與C語言媲美的運行效率和面向對象編程語言的高開發效率,許多注重性能的軟件都使用C++作為主要開發語言。C++繼承自C,因此也存在類似C語言的一些內存安全問題,比如常見的緩沖區出,空指針解引用和Use-After-Free等。要分析由C++編譯成的二進制可執行文件中Use-After-Free漏洞,則要先知道C++對象是如何被構造的;要分析由C++編譯成的二進制可執行文件是否包含惡意代碼,也要先通過C++抽象信息(即C++的類、對象、類的方法、成員變量、類之間的繼承關系等)來分析程序邏輯。因此,恢復出C++的抽象信息在二進制可執行文件的逆向工程中具有十分重要的意義。
然而,在二進制可執行文件的逆向工程中,由C++編譯成的二進制可執行文件的分析難度比由C編譯成的二進制可執行文件大得多,因為由C++編譯成的二進制可執行文件在運行過程中并不需要知道C++的抽象信息,所以這些信息在編譯的過程中大部分都被丟棄了。如何準確地恢復出這些C++的抽象信息,成為二進制可執行文件的逆向工程中的一個熱點問題。
軟件逆向工程是研究閉源軟件行為的重要方式。通過逆向工程,我們可以恢復出閉源軟件中的一些算法、協議和應用程序接口(API),進而可以了解一個軟件內部是否包含惡意代碼,或者漏洞(比如常見的棧溢出、堆溢出和Use-After-Free等)。在法律允許的情況下,我們還可以通過逆向工程恢復出閉源軟件中的一些算法、協議和應用程序接口(API)。增加一句話或者2句話說明對于C++編寫的軟件恢復的重要意義。
C++是目前主流的面向對象編程語言之一,許多注重性能的軟件都使用C++作為主要開發語言。在二進制可執行文件的逆向工程中,由C++編譯成的二進制文件的分析難度通常比由C編譯成的二進制文件大得多,這是因為C++引入了類與對象等面向對象(OO)編程的概念,而這些信息在編譯的過程中大部分都丟失了。要正確地理解由C++編譯成的二進制文件的行為,就要先從二進制文件中恢復出C++的類、對象等面向對象編程相關的屬性信息//題目是C++對象恢復,這里說的是屬性恢復,需要保持一致,你需要確認到底想做什么,再修改題目和這里,令它們保持一致。
對XXX的恢復技術中,目前現有的技術的方法主要包括XXXX。這些方法主要是通過分析C++虛函數表和程序的控制流來實現(來實現什么需補充)。但是這些技術都要通過分析C++虛函數表得到一些基本信息,所以對于沒有虛函數的類,分析起來比較困難。較新的方法使用了符號分析的方法得到一些二進制代碼內的一些C++基本事實,再基于Prolog規則進行推理分析,最終從而恢復出對象的具體屬性。符號分析可以較準確地得到C++中對象的創建、修改、維護等操作,但是在Prolog推理分析中,對于含義比較模糊的屬性,Prolog會先作出一個假設推理,再對結論進行驗證。這個過程需要大量的計算,并且準確率不高。//這段主要是將已有的技術分成幾類,開頭先概括,最后說明你想做的方法主要是在哪個方面,跟專利的題目相一致。目前已有的方法主要包括:分析C++的運行時類型識別(RTTI)信息、分析C++虛函數表和程序的控制流等。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于中山大學,未經中山大學許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201911403402.5/2.html,轉載請聲明來源鉆瓜專利網。





