[發明專利]一種靜態檢測安卓代碼中的資源回收漏洞的方法和裝置有效
| 申請號: | 201611111681.4 | 申請日: | 2016-12-06 |
| 公開(公告)號: | CN108153666B | 公開(公告)日: | 2023-05-26 |
| 發明(設計)人: | 袁偉;劉俊 | 申請(專利權)人: | 三六零科技集團有限公司 |
| 主分類號: | G06F11/36 | 分類號: | G06F11/36 |
| 代理公司: | 北京恒博知識產權代理有限公司 11528 | 代理人: | 范勝祥 |
| 地址: | 300450 天津市濱海新區華苑產*** | 國省代碼: | 天津;12 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 靜態 檢測 代碼 中的 資源 回收 漏洞 方法 裝置 | ||
本發明公開了一種靜態檢測安卓代碼中的資源回收漏洞的方法和裝置。其中所述方法包括:讀取待檢測的安卓應用的源代碼到內存中;檢測所述源代碼中是否包含有創建占用資源的待回收對象的操作指令;如果有,進一步檢測所述源代碼中是否包含有與所述占用資源的待回收對象對應的資源回收指令;如果沒有對應的資源回收指令,則確定所述源代碼中存在資源回收漏洞。該技術方案不需要人工進行代碼檢索,準確率和效率都得到了大量提升,也減輕了開發人員的壓力,提高了代碼開發過程中的自動化程度。
技術領域
本發明涉及計算機技術領域,特別涉及一種靜態檢測安卓代碼中的資源回收漏洞的方法和裝置。
背景技術
在JAVA中,當沒有對象引用指向原先分配給某個對象的內存時,該內存便成為垃圾。垃圾回收意味著程序不再需要的對象是無用信息,這些信息將被丟棄。然而,JAVA自身的垃圾回收機制只能回收無用對象的內存空間,對于數據庫連接、磁盤IO流等物理類型資源無法釋放,需要手動釋放處理。如果開發者未在代碼中使用對應的資源回收方法,這些資源就會一直占用,日積月累造成內存溢出,因此這種漏洞被稱為資源回收漏洞。現有技術中對安卓代碼中資源回收漏洞的排查只能通過人工方式進行代碼檢索,費時費力,效率低下。
發明內容
鑒于上述問題,提出了本發明以便提供一種克服上述問題或者至少部分地解決上述問題的靜態檢測安卓代碼中的資源回收漏洞的方法和裝置。
依據本發明的一個方面,提供了一種靜態檢測安卓代碼中的資源回收漏洞的方法,包括:
讀取待檢測的安卓應用的源代碼到內存中;
檢測所述源代碼中是否包含有創建占用資源的待回收對象的操作指令;
如果有,進一步檢測所述源代碼中是否包含有與所述占用資源的待回收對象對應的資源回收指令;如果沒有對應的資源回收指令,則確定所述源代碼中存在資源回收漏洞。
可選地,所述讀取待檢測的安卓應用的源代碼到內存中包括:
獲取所述源代碼的路徑信息;
根據所述源代碼的路徑信息,以多線程方式讀取該路徑下的所有代碼文件到內存中。
可選地,所述檢測所述源代碼中是否包含有創建占用資源的待回收對象的指令包括:
調用所述源代碼的解析器解析所述源代碼,得到所述源代碼的抽象語法樹;
對所述抽象語法樹中的各節點進行分類,將類型相同的節點保存到對應的同一個節點集合中,得到類型不同的多個節點集合;
確定創建占用資源的待回收對象的指令的多個屬性,根據該多個屬性從所述多個節點集合中查找與創建占用資源的待回收對象的指令對應的節點;
檢測該節點下是否包含有創建占用資源的待回收對象的操作指令。
可選地,所述確定待定位的指定內容的多個屬性包括:
確定所述指定內容的分類屬性;
以及確定所述指定內容的一個或多個其他屬性。
可選地,所述根據該多個屬性從所述多個節點集合中查找與所述指定內容對應的節點包括:
先根據所述指定內容的分類屬性,確定與該分類屬性對應的一個節點集合;
從所述其他屬性中選擇一個屬性,從所確定的節點集合中查找出與該屬性匹配的節點;
判斷所述一個或多個其他屬性中是否存在未被選擇的屬性,如果存在則從查找的節點中進一步選出與該屬性匹配的節點,直到所述的其他屬性均被選擇過一次。
可選地,所述創建占用資源的待回收對象的操作指令為:數據庫操作函數。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于三六零科技集團有限公司,未經三六零科技集團有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201611111681.4/2.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:數據測試方法及裝置
- 下一篇:應用的調試方法、裝置及系統





