[發明專利]一種二進制反編譯中數組數據結構恢復方法及系統有效
| 申請號: | 201810573717.3 | 申請日: | 2018-06-06 |
| 公開(公告)號: | CN108958739B | 公開(公告)日: | 2020-11-10 |
| 發明(設計)人: | 高慶;張世琨;孫永杰;馬森 | 申請(專利權)人: | 北京大學;北京北大軟件工程股份有限公司 |
| 主分類號: | G06F8/53 | 分類號: | G06F8/53 |
| 代理公司: | 北京路浩知識產權代理有限公司 11002 | 代理人: | 王瑩;吳歡燕 |
| 地址: | 100871*** | 國省代碼: | 北京;11 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 二進制 反編譯 數組 數據結構 恢復 方法 系統 | ||
1.一種二進制反編譯中數組數據結構恢復方法,其特征在于,包括:
S11,對于目標反編譯結果中任一非指針變量,若該非指針變量的實際占位大小與該非指針變量的類型對應的占位大小之間的差值大于第一預設閾值,則將該非指針變量作為目標變量;
S12,獲取所述目標變量在所述目標反編譯結果中各使用位置對應的第一使用模式,若根據所述第一使用模式對應的第一權重確定所述目標變量為數組變量,則對所述數組變量的數據結構進行恢復;
其中,S12具體包括:
S121,根據所述目標反編譯結果的抽象語法樹,獲取所述目標變量在所述目標反編譯結果中各使用位置和各所述使用位置對應的第一使用模式;
S122,根據各所述第一使用模式對應的第一權重,將所述目標變量在所述目標反編譯結果中各使用位置對應的第一權重相加;
S123,若相加結果大于第二預設閾值,則獲知所述目標變量為數組變量,對所述數組變量的數據結構進行恢復;
其中,S12中對數組變量的數據結構進行恢復的步驟具體包括:
根據所述數組變量的實際占位大小和所述數組變量的類型,計算所述數組變量中元素的個數;
根據所述數組變量中元素的個數,對各所述使用位置的目標變量增加數據結構。
2.根據權利要求1所述的方法,其特征在于,步驟S11之前還包括:
若目標反編譯結果中各非指針變量為局部變量,則獲取所述非指針變量所屬函數的棧結構,根據各所述非指針變量在所述棧結構中的位置獲取各所述非指針變量的實際占位大小;
若各所述非指針變量為全局變量,則獲取各所述非指針變量的存儲區結構,根據各所述非指針變量在所述存儲區結構中的位置獲取各所述非指針變量的實際占位大小。
3.根據權利要求1所述的方法,其特征在于,S11之前還包括:
根據各非指針變量在目標反編譯結果中的各使用位置,從各所述使用位置對應函數的參數中獲取各所述非指針變量的實際占位大小。
4.根據權利要求1所述的方法,其特征在于,S11之前還包括:
構建目標反編譯結果的抽象語法樹,根據所述抽象語法樹獲取所述目標反編譯結果中各非指針變量的類型。
5.根據權利要求1所述的方法,其特征在于,所述第一使用模式對應的第一權重為所述第一使用模式所屬的使用類別對應的第一權重;
其中,所述使用類別包括數組類使用、通用使用和非數組類使用。
6.根據權利要求1所述的方法,其特征在于,S123還包括:
若所述相加結果小于或等于所述第二預設閾值,且大于第三預設閾值,則獲知所述目標變量為第一疑似數組變量;其中,所述第三預設閾值小于所述第二預設閾值;
根據用戶輸入的第四預設閾值,確定是否對所述第一疑似數組變量的數據結構進行恢復;其中,所述第四預設閾值小于或等于所述第二預設閾值,且大于所述第三預設閾值。
7.根據權利要求1-6任一所述的方法,其特征在于,S11還包括:
對于任一所述非指針變量,若該非指針變量的實際占位大小與該非指針變量的類型對應的占位大小之間的差值小于或等于所述第一預設閾值,則將該非指針變量作為疑似目標變量;
相應地,S12還包括:
獲取所述疑似目標變量在所述目標反編譯結果中各使用位置對應的第二使用模式,若根據所述第二使用模式對應的第二權重確定所述疑似目標變量為第二疑似數組變量,則根據用戶輸入的第五預設閾值確定是否對所述第二疑似數組變量的數據結構進行恢復。
8.一種二進制反編譯中數組數據結構恢復系統,其特征在于,包括:
比較模塊,用于對于目標反編譯結果中任一非指針變量,若該非指針變量的實際占位大小與該非指針變量的類型對應的占位大小之間的差值大于第一預設閾值,則將該非指針變量作為目標變量;
恢復模塊,用于獲取所述目標變量在所述目標反編譯結果中各使用位置對應的第一使用模式,若根據所述第一使用模式對應的第一權重確定所述目標變量為數組變量,則對所述數組變量的數據結構進行恢復;
其中,恢復模塊具體用于:
根據目標反編譯結果的抽象語法樹,獲取目標變量在目標反編譯結果中的各使用位置和各使用位置對應的第一使用模式;
根據各第一使用模式對應的第一權重,將目標變量在目標反編譯結果中各使用位置對應的第一權重相加;
若相加結果大于第二預設閾值,則獲知目標變量為數組變量,對數組變量的數據結構進行恢復;
其中,恢復模塊具體用于:
根據數組變量的實際占位大小和數組變量的類型,計算數組變量中元素的個數;
根據數組變量中元素的個數,對各使用位置的目標變量增加數據結構。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于北京大學;北京北大軟件工程股份有限公司,未經北京大學;北京北大軟件工程股份有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201810573717.3/1.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:PLC控制的梯級代碼編譯方法及裝置
- 下一篇:一種數據處理方法及裝置





