[發明專利]一種Android二進制文件漏洞檢測方法及系統在審
| 申請號: | 201810221973.6 | 申請日: | 2018-03-18 |
| 公開(公告)號: | CN108416219A | 公開(公告)日: | 2018-08-17 |
| 發明(設計)人: | 張德岳 | 申請(專利權)人: | 西安電子科技大學 |
| 主分類號: | G06F21/57 | 分類號: | G06F21/57;G06F21/56 |
| 代理公司: | 西安長和專利代理有限公司 61227 | 代理人: | 黃偉洪 |
| 地址: | 710071 陜西省*** | 國省代碼: | 陜西;61 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 二進制文件 測試用例生成模型 代碼覆蓋率 漏洞檢測 使用機器 測試 技術實現 漏洞挖掘 評判標準 隨機變異 網絡構造 遺傳算法 自動生成 適應度 插樁 類庫 衡量 學習 | ||
1.一種Android平臺二進制文件的漏洞檢測方法,其特征在于,所述Android二進制文件漏洞檢測方法包括:
使用基于LLVM的插樁技術實現代碼覆蓋率信息的收集,作為在遺傳算法中衡量種子適應度的評判標準,選擇種子進行下一代的隨機變異;
使用機器學習中的RNN網絡構造測試用例生成模型,使用大量某種格式的文件訓練得到的測試用例生成模型,自動生成新的測試用例。
2.如權利要求1所述的Android二進制文件漏洞檢測方法,其特征在于,所述Android二進制文件漏洞檢測方法進一步包括:
使用基于LLVM的插樁技術對目標程序進行編譯時插樁,插入一段功能代碼,實現對基本塊的標記與記錄基本塊級別的覆蓋率信息的獲取功能;
對基本塊的標記,我生成一個隨機數給每一個基本塊,作為其unique label;
然后使用fork函數得到的子進程中不斷啟動執行目標程序;讀取插入的功能代碼獲取的覆蓋率信息,將其保存一個2M的大數組中;并保存當前時刻數組的哈希值;
然后調用compare函數比較兩次的哈希值是否一致,若不一致,添加到隊列中;
遺傳算法是根據比較結果對選擇的測試用例執行變異策略,生成新一代的測試用例集合:
對于使用的變異策略,則是直接對測試用例的bit位,byte字節進行操作;
最后對于crash信息的收集則是通過logcat命令將Android系統日志中的Fatal級別的錯誤信息保存到一個文件中,將tombstone信息也保存到文件中;
然后再分析這兩個文件,得到的crash的詳細信息;還可以結合gdb調試來獲取更詳細的信息。
3.如權利要求1所述的Android二進制文件漏洞檢測方法,其特征在于,所述Android二進制文件漏洞檢測方法具體包括:
直接獲取目標程序或者輸入測試程序,然后使用基于LLVM的插樁技術,進行編譯時插樁,獲得目標程序,然后使用adb push將目標程序推送到Android設備上,進行Fuzzing;
啟動Fuzzer后,隨著目標程序的執行,生成并維護一個Hash表,用以記錄代碼覆蓋率信息;Fuzzer從測試用例集中讀取測試用例傳給目標程序進行執行,然后生成一個Hash表并不斷更新;
目標程序每執行一個測試用例,Fuzzer會讀取當前Hash表并與上一次的信息進行比較,分析是否執行新的路徑或基本塊,然后設置True/False標簽,依次評判某個測試用例的適應度,進行選擇或放棄;然后將選擇的測試用例作為新的種子,依次使用變異策略進行變異,生成更多的測試用例,放到測試用例集中;
目標程序發生crash時,crash信息記錄在log日志以及tombstone文件中;最后調用腳本程序分析這些文件中的信息,進行輸出展示。
4.一種實現權利要求1~3任意一項所述Android二進制文件漏洞檢測方法的計算機程序。
5.一種實現權利要求1~3任意一項所述Android二進制文件漏洞檢測方法的信息數據處理終端。
6.一種計算機可讀存儲介質,包括指令,當其在計算機上運行時,使得計算機執行如權利要求1-3任意一項所述Android二進制文件漏洞檢測方法。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于西安電子科技大學,未經西安電子科技大學許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201810221973.6/1.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:一種Web服務器漏洞驗證方法
- 下一篇:一種訪問控制方法及裝置





