TWI611349B - 檢測系統及其方法 - Google Patents
檢測系統及其方法 Download PDFInfo
- Publication number
- TWI611349B TWI611349B TW104141780A TW104141780A TWI611349B TW I611349 B TWI611349 B TW I611349B TW 104141780 A TW104141780 A TW 104141780A TW 104141780 A TW104141780 A TW 104141780A TW I611349 B TWI611349 B TW I611349B
- Authority
- TW
- Taiwan
- Prior art keywords
- rule
- decompiled
- program
- detection
- code
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/566—Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/562—Static detection
- G06F21/563—Static detection by source code analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/53—Decompilation; Disassembly
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/03—Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
- G06F2221/034—Test or assess a computer or a system
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Virology (AREA)
- Quality & Reliability (AREA)
- Debugging And Monitoring (AREA)
- Stored Programmes (AREA)
- Telephonic Communication Services (AREA)
Abstract
一種檢測系統及其方法。一種檢測方法,包含:反編譯一第一應用程式封裝檔,以產生多個第一反編譯檔案,且第一反編譯檔案包含一第一反編譯程式碼;比對第一反編譯程式碼與一第二應用程式封裝檔之一第二反編譯程式碼,分析第一反編譯程式碼與一第二反編譯程式碼之一相異程式區段,依據第一反編譯程式碼之一函式呼叫流程以分類出對應相異程式區段的一程式異動類型;載入一異動類型與規則對照表,並選取異動類型與規則對照表中之對應程式異動類型的至少一檢測規則;依據至少一檢測規則確認第一反編譯程式碼之一檢測範圍;以及檢測此檢測範圍,以產生一安全性檢測結果。
Description
本發明是有關於一種檢測系統及其方法,且特別是有關於一種關於檢測應用程式改版之檢測系統及其方法。
隨著應用程式的普及,各種電子裝置上的應用程式之改版也日益頻繁。目前的應用程式檢測系統主要是提出應用程式的拆解方法,使程式開發者可在取得程式原始碼後,搭配判斷應用函式介面(Application Programming Interface,API)的呼叫權重,以判斷是否此應用程式為惡意程式。此外,於一些傳統的檢測系統中,係於解構應用程式後,利用搜尋程式碼中的關鍵詞,搭配統計的學習機制,以判斷某兩個應用程式之間的相似度。
然而,在眾多應用程式頻繁改版的情況下,若要將新版的應用程式之整體進行檢測,並判斷此新版的應用程式是否具安全性,則需要耗用龐大的人力資源與時間資源,才能將每個新版的應用程式一一完成檢測。因此,如何有效率的檢測新版的應用程式,即是本領域相關人員所需解決的問題。
為解決上述的問題,本發明之一態樣提供一種檢測系統。檢測系統包含:一反編譯模組、一改版程式異動比對及分類模組及一資安檢測模組。反編譯模組用以反編譯一第一應用程式封裝檔,以產生多個第一反編譯檔案,且第一反編譯檔案包含一第一反編譯程式碼。改版程式異動比對及分類模組用以比對第一反編譯程式碼與一第二應用程式封裝檔之一第二反編譯程式碼,分析第一反編譯程式碼與第二反編譯程式碼之一相異程式區段,依據第一反編譯程式碼之一函式呼叫流程以分類出對應相異程式區段的一程式異動類型,並載入一異動類型與規則對照表,以及選取異動類型與規則對照表中之對應程式異動類型的至少一檢測規則。資安檢測模組用以依據至少一檢測規則選擇性地更新或建立一資料流程,並依據資料流程確認第一反編譯程式碼之一檢測範圍,以及檢測此檢測範圍,以產生一安全性檢測結果。
本發明之另一態樣提供一種檢測方法。檢測方法包含:反編譯一第一應用程式封裝檔,以產生多個第一反編譯檔案,且第一反編譯檔案包含一第一反編譯程式碼;比對第一反編譯程式碼與一第二應用程式封裝檔之一第二反編譯程式碼,分析第一反編譯程式碼與第二反編譯程式碼之一相異程式區段,依據第一反編譯程式碼之一函式呼叫流程以分類出對應相異程式區段的一程式異動類型;載入一異動類型與規則對照表,並選取異動類型與規則對照表中之對應
程式異動類型的至少一檢測規則;依據至少一檢測規則選擇性地更新或建立一資料流程,並依據資料流程確認第一反編譯程式碼之一檢測範圍;以及檢測此檢測範圍,以產生一安全性檢測結果。
本發明之又一態樣提供一種非揮發性電腦可讀取記錄媒體。非揮發性電腦可讀取記錄媒體儲存一電腦程式,用以執行一種應用於檢測系統中之一檢測方法,其中檢測方法包括:反編譯一第一應用程式封裝檔,以產生多個第一反編譯檔案,且第一反編譯檔案包含一第一反編譯程式碼;比對第一反編譯程式碼與一第二應用程式封裝檔之一第二反編譯程式碼,並分析第一反編譯程式碼與第二反編譯程式碼之一相異程式區段,依據該第一反編譯程式碼之一函式呼叫流程以分類出對應相異程式區段的一程式異動類型;載入一異動類型與規則對照表,並選取異動類型與規則對照表中之對應程式異動類型的至少一檢測規則;依據至少一檢測規則選擇性地更新或建立一資料流程,並依據資料流程確認第一反編譯程式碼之一檢測範圍;以及檢測此檢測範圍,以產生一安全性檢測結果。
綜上所述,本發明之技術方案與現有技術相比具有明顯的優點和有益效果。藉由上述技術方案,可達到相當的技術進步,並具有產業上的廣泛利用價值。本揭示內容可檢測出改版前應用程式與新版應用程式之相異程式區段,故只需檢測此相異程式區段及與此相異程式區段相關的程式部份,即可取得此新版應用程式的安全性檢測結果,換言之,本案之檢測系統無需檢測整體新版的應用程式,因
此,本案避免了檢測資源的重複耗用,且提供了一種更有效率的檢測系統及其方法。
110‧‧‧反組譯模組
100‧‧‧檢測系統
200、400‧‧‧檢測方法
300‧‧‧異動類型與規則對照表
130‧‧‧改版程式異動比對及分類模組130
150‧‧‧資安檢測模組
170‧‧‧報表模組
180‧‧‧儲存裝置
S210~S250、S410~S460‧‧‧步驟
為讓本發明之上述和其他目的、特徵、優點與實施例能更明顯易懂,所附圖式之說明如下:第1圖根據本發明之一實施例繪示一種檢測系統之方塊圖;第2圖根據本發明之一實施例繪示一種檢測方法之流程圖;第3圖根據本發明之一實施例繪示一種異動類型與規則對照表的示意圖;以及第4圖根據本發明之一實施例繪示一種檢測方法之流程圖。
請參照第1、2及3圖,如第1圖所示,第1圖根據本發明之一實施例繪示一種檢測系統100之方塊圖。第2圖根據本發明之一實施例繪示一種檢測方法200之流程圖。第3圖根據本發明之一實施例繪示一種異動類型與規則對照表300的示意圖。於一實施例中,檢測系統100包含:一反編譯模組110、一改版程式異動比對及分類模組130及一資安檢測模組150。於另一實施例中,檢測系統100更包含一儲存裝置180及一報表模組170,其中,儲存裝置180用以儲存異動類型與規則對照表300、一報表、至少一檢測
規則、一舊版應用程式封裝檔資訊及安全性檢測結果。報表模組170用以依據安全性檢測結果產生一報表,並可依據每一次更新後的安全性檢測結果產生一更新後的報表。於一實施例中,報表可以儲存於儲存裝置180中。
如第1圖所示,儲存裝置180可被實作為唯讀記憶體、快閃記憶體、軟碟、硬碟、光碟、隨身碟、磁帶、可由網路存取之資料庫或熟悉此技藝者可輕易思及具有相同功能之儲存媒體。此外,反編譯模組110、改版程式異動比對及分類模組130、資安檢測模組150及報表模組170可分別或合併被實施為例如為微控制單元(microcontroller)、微處理器(microprocessor)、數位訊號處理器(digital signal processor)、特殊應用積體電路(application specific integrated circuit,ASIC)或一邏輯電路。
於步驟S210中,反編譯模組110用以反編譯一第一應用程式封裝檔,以產生多個第一反編譯檔案,且第一反編譯檔案包含一第一反編譯程式碼。
於一實施例中,第一應用程式封裝檔可以是一種安卓(Android)操作系統上的應用程式安裝文件格式,例如為安卓安裝包(Android Package,一般稱為APK)檔案,反編譯模組110可藉由反編譯此APK檔案,以產生多個第一反編譯檔案。於一實施例中,此些第一反編譯檔可以例如為smali檔案。然,本領域具通常知識者應可由已知的現有方法理解將APK檔案反編譯為smali檔案的技術內容,或應用現有的套裝軟體直接將APK檔案反編譯為smali檔案,故此處不贅述之。此外,本案所述之第一應用程式
封裝檔並不僅限於APK檔案,第一應用程式封裝檔亦可為其他類型的程式。
於步驟S220中,改版程式異動比對及分類模組130用以比對第一反編譯程式碼與一第二應用程式封裝檔之一第二反編譯程式碼,分析第一反編譯程式碼與一第二反編譯程式碼之一相異程式區段,依據第一反編譯程式碼之一函式呼叫流程以分類出對應相異程式區段的一程式異動類型。
於一實施例中,第一應用程式封裝檔為一新版應用程式封裝檔,第二應用程式封裝檔為一舊版應用程式封裝檔。於一實施例中,舊版應用程式封裝檔儲存在儲存裝置180中,且舊版應用程式封裝檔包含一舊版應用程式封裝檔資訊,此舊版應用程式封裝檔資訊包含舊版應用程式封裝檔的建立日期、修改日期、檔案大小、檔案類型、前次存取日期、檔案位置及/或多個第二反編譯檔案,其中,此些第二反編譯檔案包含第二反編譯程式碼。
於一實施例中,反編譯模組110更用以反編譯第二應用程式封裝檔(例如為舊版應用程式封裝檔),以產生多個第二反編譯檔案,並將此些第二反編譯檔案儲存於儲存裝置180之一資料庫中,於此實施例中,此些第二反編譯檔案包含第二反編譯程式碼。
於一實施例中,儲存裝置180之一資料庫存在此些第二反編譯檔案,此些第二反編譯檔案對應第二應用程式封裝檔。
接著,改版程式異動比對及分類模組130比對
此些第一反編譯檔案及此些第二反編譯檔案(例如比對具有相同檔案名稱之反編譯檔案內容),以取得第一反編譯檔案中的一異動檔案,且異動檔案包含第一反編譯程式碼;改版程式異動比對及分類模組130藉由找出第一反編譯檔案中的異動檔案,可進一步分析異動檔案中之反編譯程式碼。於一實施例中,改版程式異動比對及分類模組130可以藉由字元比對、字串比對、函式名稱比對、檔案名稱比對等方式,以找到第一反編譯程式碼(例如為新版應用程式封裝檔的反編譯程式碼)與一第二反編譯程式碼(例如為舊版應用程式封裝檔的反編譯程式碼)之一相異程式區段。於一實施例中,第一反編譯程式碼與一第二反編譯程式碼之間可具有多個相異程式區段。於一實施例中,第二反編譯程式碼(例如為舊版應用程式封裝檔的反編譯程式碼)可從儲存裝置180、雲端儲存空間或任一資料庫中載入過往資料以取得。
於一實施例中,改版程式異動比對及分類模組130於分析出相異程式區段後,依據第一反編譯程式碼之一函式呼叫流程以分類出對應此相異程式區段的程式異動類型,此程式異動類型可以包含參數值異動、單一函式之呼叫異動或函式呼叫流程異動三者其中至少之一,以下進一步說明關於程式異動類型之定義方式。
於一實施例中,當改版程式異動比對及分類模組130分析第一反編譯程式碼與第二反編譯程式碼之相異程式區段中包含一參數值異動時,程式異動類型被定義為參數值異動類型。
舉例而言,當第一反編譯程式碼(例如為新版應用程式封裝檔的反編譯程式碼)與第二反編譯程式碼(例如為舊版應用程式封裝檔的反編譯程式碼)都具有一特定參數時,且此特定參數在第二反編譯程式碼被設置為2,而在第一反編譯程式碼中被更改為3,則於改版程式異動比對及分類模組130比對第一反編譯程式碼與一第二反編譯程式碼後,改版程式異動比對及分類模組130可分析出此相異程式區段(例如,特定參數由2改變為3的程式區段),以取得對應相異程式區段的一程式異動類型,且改版程式異動比對及分類模組130將關於參數值異動的程式異動類型分類為參數值異動類型。
於一實施例中,當改版程式異動比對及分類模組130分析第一反編譯程式碼與第二反編譯程式碼之相異程式區段中包含一單一函式之呼叫異動時,程式異動類型被定義為單一函式之呼叫異動類型。於一實施例中,改版程式異動比對及分類模組130可藉由分析第一反編譯程式碼的函式呼叫流程,以判斷第一反編譯程式碼與第二反編譯程式碼之相異程式區段中是否包含單一函式之呼叫異動。
舉例而言,當第一反編譯程式碼(例如為新版應用程式封裝檔的反編譯程式碼)具有一特定函式(例如為系統呼叫,system call),而第二反編譯程式碼(例如為舊版應用程式封裝檔的反編譯程式碼)不具有一特定函式時,則代表第一反編譯程式碼相較於第二反編譯程式碼更進一步新增了此特定函式,於此情況中,改版程式異動比對及分
類模組130可分析出此相異程式區段(例如,於第一反編譯程式碼中新增的此特定函式之程式區段),以取得對應相異程式區段的一程式異動類型。藉此,改版程式異動比對及分類模組130可將關於此種單一函式之呼叫異動(例如,新增系統呼叫)的程式異動類型分類為單一函式之呼叫異動類型。
於另一例中,當第一反編譯程式碼不具有一特定函式,而第二反編譯程式碼具有一特定函式時,則代表第一反編譯程式碼相較於第二反編譯程式碼更進一步移除了此特定函式,於此情況中,改版程式異動比對及分類模組130可分析出此相異程式區段(例如,第一反編譯程式碼中已移除的此特定函式之程式區段),以取得對應相異程式區段的一程式異動類型。藉此,改版程式異動比對及分類模組130可將關於此種單一函式之呼叫異動(例如,移除系統呼叫)的程式異動類型分類為單一函式之呼叫異動類型。
於一實施例中,當改版程式異動比對及分類模組130分析第一反編譯程式碼與第二反編譯程式碼之相異程式區段中包含一函式呼叫流程異動時,程式異動類型被定義為函式呼叫流程異動類型。於一實施例中,改版程式異動比對及分類模組130可藉由分析第一反編譯程式碼的函式呼叫流程,以判斷第一反編譯程式碼與第二反編譯程式碼之相異程式區段中是否包函式呼叫流程異動。
舉例而言,當第二反編譯程式碼(例如為舊版應用程式封裝檔的反編譯程式碼)中是先依序呼叫一第一函式、第二函式與第三函式,而第一反編譯程式碼(例如為新
版應用程式封裝檔的反編譯程式碼)改變為依序呼叫第一函式、第四函式及第三函式時,改版程式異動比對及分類模組130會將此種關於一函式呼叫流程異動的程式異動類型分類為函式呼叫流程異動類型。
於另一例中,當第二反編譯程式碼(例如為舊版應用程式封裝檔的反編譯程式碼)中是先依序呼叫一第一函式、第二函式與第三函式,而第一反編譯程式碼(例如為新版應用程式封裝檔的反編譯程式碼)改變為依序呼叫第一函式、第四函式及第三函式時,其中,第四函式係為程式設計者重新打包(packaging)第二函式而得的情況下,改版程式異動比對及分類模組130也將此種關於一函式呼叫流程異動的程式異動類型分類為函式呼叫流程異動類型。
於一實施例中,改版程式異動比對及分類模組130可分析第一反編譯程式碼與一第二反編譯程式碼之多個相異程式區段,且此些相異程式區段異動類型可分別被定義為一參數值異動類型、一單一函式之呼叫異動類型或一函式呼叫流程異動類型三者至少其中之一。
於步驟S230中,改版程式異動比對及分類模組130更用以載入一異動類型與規則對照表300,並選取異動類型與規則對照表300中之對應程式異動類型的至少一檢測規則。於一實施例中,此至少一檢測規則更包含一第一規則、一第二規則及一第三規則,且依據異動類型與規則對照表,可將程式異動類型對應至該第一規則、該第二規則或該第三規則三者至少其中之一。藉此,改版程式異動比對及分類模組130可選取對應程式異動類型的第一規
則、第二規則或第三規則三者至少其中之一。
於一實施例中,如第3圖所示,當相異程式區段的程式異動類型包含函式呼叫流程異動類型時,改版程式異動比對及分類模組130依據異動類型與規則對照表300選取第三規則。
於一實施例中,當相異程式區段的程式異動類型包含單一函式之呼叫異動類型時,改版程式異動比對及分類模組130依據異動類型與規則對照表300選取第二規則。
於一實施例中,當相異程式區段的程式異動類型同時包含單一函式之呼叫異動類型及函式呼叫流程異動類型時,改版程式異動比對及分類模組130依據異動類型與規則對照表300選取第二規則及第三規則。
於一實施例中,當相異程式區段的程式異動類型同時包含參數值異動類型及函式呼叫流程異動類型時,改版程式異動比對及分類模組130依據異動類型與規則對照表300選取第一規則及第三規則。
由此可知,改版程式異動比對及分類模組130可選取對應程式異動類型的第一規則、第二規則或第三規則三者至少其中之一。另外,依據異動類型與規則對照表300,其他程式異動類型與檢測規則的對應方式亦以此類推,此處不再贅述之。
然,本領域具通常知識者應可理解,本案發明並不限於異動類型與規則對照表300中所述的配置或對應方式,亦可基於實際實施方式,以調整異動類型與規則對
照表300中的程式異動類型與檢測規則的對應方式。另一方面,異動類型與規則對照表300可使用者事先設定並儲存於儲存裝置180之一資料庫中。
此外,關於檢測規則的細部內容,例如第一規則、第二規則及第三規則的相關技術特徵,將於第4圖之對應說明書段落中詳述之。
於步驟S240中,資安檢測模組150用以依據至少一檢測規則選擇性地更新或建立一資料流程,並依據資料流程確認第一反編譯程式碼之一檢測範圍。
於一實施例中,改版程式異動比對及分類模組130於步驟S230中所選取的至少一檢測規則,資安檢測模組150可判斷是否需要更新或建立資料流程。舉例而言,當一更動後的參數值傳到未被更動的一特定函式時,將會改變此特定函式的運算結果;因此,當資安檢測模組150判斷第一反編譯程式碼中的相異程式區段會影響到其他程式區段的資料流時,資安檢測模組150會更新資料流程。於一實施例中,當資安檢測模組150判斷第一反編譯程式碼中具有新增的參數,資安檢測模組150會依據此新增的參數建立資料流程。
於步驟S250中,資安檢測模組150更用以檢測此檢測範圍,以產生一安全性檢測結果。於一實施例中,資安檢測模組150可依據資料流程所確認的第一反編譯程式碼之檢測範圍進行檢測,例如檢測某一參數及與其相關的參數與函式之範圍,以產生安全性檢測結果。於一實施例中,此安全性檢測結果可以被顯示於一使用者介面中(未
繪示),例如,安全性檢測結果可用以表示新版應用程式封裝檔中被更動的加密設置參數,藉此讓使用者得知新版應用程式封裝檔中的加密方式由安全性較高的傳輸層安全性(TLS)加密方式被更動為安全性較低的安全通訊端層(SSL)加密方式。於一實施例中,報表模組170用以依據安全性檢測結果產生一報表。
此外,於一實施例中,上述檢測方法200可被實施為一電腦程式,儲存於非揮發性電腦可讀取記錄媒體,且此非揮發性電腦可讀取記錄媒體用以執行檢測系統100中之檢測方法200。
接著,請一併參照第1圖與第4圖,第4圖根據本發明之一實施例繪示一種檢測方法400之流程圖。為了方便說明,第1圖所示之檢測系統100之操作會與檢測方法400一併說明。第4圖中的步驟S410、S420、S430、S450分別與第2圖中的步驟S210、S220、S230、S250相同,故以下說明書內容不再針對此些步驟詳細說明。
於步驟S430中,改版程式異動比對及分類模組130載入一異動類型與規則對照表300,並選取異動類型與規則對照表300中之對應程式異動類型的至少一檢測規則。於一實施例中,至少一檢測規則包含一第一規則、一第二規則及一第三規則,且改版程式異動比對及分類模組130用以選取對應程式異動類型的第一規則、第二規則或第三規則三者至少其中之一。
例如,當程式異動類型為函式呼叫流程異動時,改版程式異動比對及分類模組130依據異動類型與規則
對照表300選取執行第三規則。例如,當程式異動類型為單一函式之呼叫異動時,改版程式異動比對及分類模組130依據異動類型與規則對照表300選取執行第二規則。例如,當程式異動類型為參數值異動時,改版程式異動比對及分類模組130依據異動類型與規則對照表300選取執行第一規則。
接著,檢測系統100依據改版程式異動比對及分類模組130所選取的第一規則、第二規則或第三規則三者至少其中之一,以選擇性地執行對應的步驟S442、S444及/或S446。更具體而言,於一實施例中,此至少一檢測規則更包含第一規則、第二規則及第三規則,且檢測系統100可依據於步驟S420中所判斷出的程式異動類型以找到對應的檢測規則。例如,參數值異動類型對應至第一規則,單一函式之呼叫異動類型對應至第二規則,函式呼叫流程異動類型對應至該第三規則。
於一實施例中,當程式異動類型被分類為參數值異動類型時,改版程式異動比對及分類模組130選取第一規則,且檢測系統100執行步驟S442,使檢測系統100依據第一規則產生一檢測範圍。
於一實施例中,當程式異動類型被分類為單一函式之呼叫異動類型時,改版程式異動比對及分類模組130選取第二規則,且檢測系統100執行步驟S444,使檢測系統100依據第二規則產生一檢測範圍。
於一實施例中,當程式異動類型被分類為函式呼叫流程異動類型時,改版程式異動比對及分類模組130選
取第三規則,且檢測系統100執行步驟S446,使檢測系統100依據第三規則產生一檢測範圍。
於一實施例中,當程式異動類型被分類為同時包含參數值異動類型及單一函式之呼叫異動類型時,改版程式異動比對及分類模組130選取第一規則及第二規則,且檢測系統100同時或先後執行步驟S442及步驟S444。
接著,以下進一步說明第一規則、第二規則及第三規則決定檢測範圍的方法。然,本領域具通常知識者應可理解決定檢測範圍的方法並不僅限於以下實施例。
於一實施例中,當改版程式異動比對及分類模組130選取第一規則時,進入步驟S442。
於步驟S442中,資安檢測模組150更新或建立資料流程(data flow),並依據資料流程確認第一反編譯程式碼之檢測範圍。
例如,當程式異動類型包含參數值異動類型時,改版程式異動比對及分類模組130選取第一規則。藉由第一規則檢測第一反編譯程式碼中所有相關於參數值異動部份的程式區段,以更新(或建立)相關於參數值異動的資料流程,並將此些異動部份的程式區段視為檢測範圍。
由此可知,藉由選取第一規則,資安檢測模組150可追蹤異動部份的程式區段之資料流程,以檢測此檢測範圍中,程式碼沒有改變,而參數值或資料卻有改變的程式區段,藉此可進一步追溯其他有用到此異動後之參數值的函式或其他程式區段。
於一實施例中,當改版程式異動比對及分類模
組130選取第二規則時,進入步驟S444。
於步驟S444中,改版程式異動比對及分類模組130依據函式呼叫流程檢測第一反編譯程式碼被更動的單一函式部份,並將被更動的單一函式部份視為檢測範圍。
例如,程式異動類型包含單一函式之呼叫異動類型時(例如異動部份為新增或刪除呼叫某一特定函式),改版程式異動比對及分類模組130選取第二規則。於一實施例中,檢測系統100藉由第二規則可檢測出第一反編譯程式碼中的此特定函式(例如為系統呼叫,system call)的異動狀態,並依據此特定函式決定檢測範圍。
於一些實施例中,由於單一函式之呼叫異動類型不影響資料流程的改變,因此第二規則可不涉及檢查資料流程更動的部份。
於一實施例中,當改版程式異動比對及分類模組130選取第三規則時,進入步驟S446。
於步驟S446中,資安檢測模組150更新(或建立)資料流程,再依據函式呼叫流程及資料流程確認第一反編譯程式碼之檢測範圍。
例如,程式異動類型包含函式呼叫流程異動類型時,改版程式異動比對及分類模組130選取第三規則。由於函式呼叫流程可能造成程式控制流及/或資料流程的改變,故藉由第三規則可檢測第一反編譯程式碼中所有與函式呼叫流程異動及資料異動相關的程式區段。例如,追蹤多個函式彼此間呼叫的控制順序,及追蹤多個函式彼此傳遞的參數或資料。藉此,檢測系統100可基於第三規則以更
新(或建立)第一反編譯程式碼的函式呼叫流程及資料流程,並將與函式呼叫流程及資料流程異動相關的程式區段視為檢測範圍。
於步驟S450中,資安檢測模組150用以檢測此檢測範圍,以產生一安全性檢測結果。由於步驟S450與第2圖中的步驟S250相同,故此處不再贅述之。
於步驟S460中,儲存安全性檢測結果於儲存裝置180中。
藉此,當應用程式更新時,資安檢測模組150可僅透過檢測第一反編譯程式碼(例如為新版應用程式封裝檔的反編譯程式碼)的一檢測範圍,即可針對新版應用程式所改變的部份進行檢測,並產生安全性檢測結果;換句話說,檢測系統100無須將整個第一反編譯程式碼都進行檢測,故本案可達到節省檢測時間與人力的效果。
藉由上述技術方案,可檢測出改版前應用程式與新版應用程式之相異程式區段,故只需檢測此相異程式區段及與此相異程式區段相關的程式部份,即可取得此新版應用程式的安全性檢測結果,換言之,本案之檢測系統無需檢測整體新版的應用程式,因此,本案避免了檢測資源的重複耗用,且提供了一種更有效率的檢測系統及其方法。
雖然本發明已以較佳實施例揭露如上,然其並非用以限定本發明,任何熟悉此項技藝者,在不脫離本發明之精神和範圍內,當可做些許更動與潤飾,因此本發明之保護範圍當視後附之申請專利範圍所界定者為準。
200‧‧‧檢測方法
S210~S250‧‧‧步驟
Claims (17)
- 一種檢測系統,包含:一反編譯模組,用以反編譯一第一應用程式封裝檔,以產生複數個第一反編譯檔案,且該些第一反編譯檔案包含一第一反編譯程式碼;一改版程式異動比對及分類模組,用以比對該第一反編譯程式碼與一第二應用程式封裝檔之一第二反編譯程式碼,分析該第一反編譯程式碼與該第二反編譯程式碼之一相異程式區段,依據該第一反編譯程式碼之一函式呼叫流程以分類出對應該相異程式區段的一程式異動類型,並載入一異動類型與規則對照表,以及選取該異動類型與規則對照表中之對應該程式異動類型的至少一檢測規則;以及一資安檢測模組,用以依據該至少一檢測規則選擇性地更新或建立一資料流程,並依據該資料流程確認該第一反編譯程式碼之一檢測範圍,以及檢測該檢測範圍,以產生一安全性檢測結果。
- 如請求項1所述之檢測系統,其中,該第一應用程式封裝檔為一新版應用程式封裝檔,該第二應用程式封裝檔為一舊版應用程式封裝檔;該舊版應用程式封裝檔儲存在一儲存裝置中,該舊版應用程式封裝檔包含一舊版應用程式封裝檔資訊,該舊版應用程式封裝檔資訊包含該舊版應用程式封裝檔的一建立日期、一修改日期、一檔案大小、一檔案類型、一前次存取日期及一檔案位置及複數個第二反編譯檔案。
- 如請求項2所述之檢測系統,更包含:一報表模組,用以依據該安全性檢測結果產生一報表;其中,該儲存裝置更用以儲存該異動類型與規則對照表、該報表、該至少一檢測規則、該舊版應用程式封裝檔資訊及該安全性檢測結果。
- 如請求項2所述之檢測系統,其中該儲存裝置之一資料庫存在該些第二反編譯檔案,該些第二反編譯檔案對應該第二應用程式封裝檔,其中,該些第二反編譯檔案包含該第二反編譯程式碼;該改版程式異動比對及分類模組更用以比對該些第一反編譯檔案及該些第二反編譯檔案,以取得該些第一反編譯檔案中的一異動檔案,且該異動檔案包含該第一反編譯程式碼。
- 如請求項1所述之檢測系統,其中,該程式異動類型包含為一參數值異動類型、一單一函式之呼叫異動類型或一函式呼叫流程異動類型三者至少其中之一。
- 如請求項5所述之檢測系統,其中,當該改版程式異動比對及分類模組分析該第一反編譯程式碼與該第二反編譯程式碼之該相異程式區段中包含一參數值異動時,該程式異動類型被分類為該參數值異動類型;當該改版程式異動比對及分類模組分析該第一反編譯程式碼與該第二反編譯程式碼之該相異程式區段中包含一單一 函式之呼叫異動時,該程式異動類型被分類為該單一函式之呼叫異動類型;以及當該改版程式異動比對及分類模組分析該第一反編譯程式碼與該第二反編譯程式碼之該相異程式區段中包含一函式呼叫流程異動時,該程式異動類型被分類為該函式呼叫流程異動類型。
- 如請求項1所述之檢測系統,其中,該至少一檢測規則包含一第一規則、一第二規則及一第三規則,且該改版程式異動比對及分類模組選取對應該程式異動類型的該第一規則、該第二規則或該第三規則三者至少其中之一。
- 如請求項5所述之檢測系統,其中,該至少一檢測規則包含一第一規則、一第二規則及一第三規則,且該參數值異動類型對應至該第一規則,該單一函式之呼叫異動類型對應至該第二規則,該函式呼叫流程異動類型對應至該第三規則。
- 一種檢測方法,包含:反編譯一第一應用程式封裝檔,以產生複數個第一反編譯檔案,且該些第一反編譯檔案包含一第一反編譯程式碼;比對該第一反編譯程式碼與一第二應用程式封裝檔之一第二反編譯程式碼,分析該第一反編譯程式碼與該第二反編譯程式碼之一相異程式區段,依據該第一反編譯程式碼之一函式呼叫流程以分類出對應該相異程式區段的一程式異動類型; 載入一異動類型與規則對照表,並選取該異動類型與規則對照表中之對應該程式異動類型的至少一檢測規則;依據該至少一檢測規則選擇性地更新或建立一資料流程,並依據該資料流程確認該第一反編譯程式碼之一檢測範圍;以及檢測該檢測範圍,以產生一安全性檢測結果。
- 如請求項9所述之檢測方法,其中,該第一應用程式封裝檔為一新版應用程式封裝檔,該第二應用程式封裝檔為一舊版應用程式封裝檔;該舊版應用程式封裝檔儲存在一儲存裝置中,該舊版應用程式封裝檔包含一舊版應用程式封裝檔資訊,該舊版應用程式封裝檔資訊包含該舊版應用程式封裝檔的一建立日期、一修改日期、一檔案大小、一檔案類型、一前次存取日期及一檔案位置及複數個第二反編譯檔案。
- 如請求項10所述之檢測方法,更包含:依據該安全性檢測結果產生一報表;儲存該異動類型與規則對照表、該報表、該至少一檢測規則、該舊版應用程式封裝檔資訊及該安全性檢測結果於該儲存裝置中。
- 如請求項10所述之檢測方法,其中該儲存裝置之一資料庫存在該些第二反編譯檔案,該些第二反編譯檔案對應該第二應用程式封裝檔其中,該些第二反編譯檔案包含該第二反編譯程式碼;以及 比對該些第一反編譯檔案及該些第二反編譯檔案,以取得該些第一反編譯檔案中的一異動檔案,且該異動檔案包含該第一反編譯程式碼。
- 如請求項9所述之檢測方法,其中,該程式異動類型包含一參數值異動類型、一單一函式之呼叫異動類型或一函式呼叫流程異動類型三者至少其中之一。
- 如請求項13所述之檢測方法,於分析該第一反編譯程式碼與該第二反編譯程式碼之該相異程式區段,依據該第一反編譯程式碼之該函式呼叫流程以分類出對應該相異程式區段的該程式異動類型之步驟中,更包含:分析該第一反編譯程式碼與該第二反編譯程式碼之該相異程式區段中包含一參數值異動時,該程式異動類型被分類為該參數值異動類型;分析該第一反編譯程式碼與該第二反編譯程式碼之該相異程式區段中包含一單一函式之呼叫異動時,該程式異動類型被分類為該單一函式之呼叫異動類型;以及分析該第一反編譯程式碼與該第二反編譯程式碼之該相異程式區段中包含一函式呼叫流程異動時,該程式異動類型被分類為該函式呼叫流程異動類型。
- 如請求項9所述之檢測方法,其中,該至少一檢測規則包含一第一規則、一第二規則及一第三規則,且其 中該選取該異動類型與規則對照表中之對應該程式異動類型的該至少一檢測規則之步驟更包含:選取對應該程式異動類型的該第一規則、該第二規則或該第三規則三者至少其中之一。
- 如請求項13所述之檢測方法,其中,該至少一檢測規則包含一第一規則、一第二規則及一第三規則,且該參數值異動類型對應至該第一規則,該單一函式之呼叫異動類型對應至該第二規則,該函式呼叫流程異動類型對應至該第三規則。
- 一種非揮發性電腦可讀取記錄媒體,儲存一電腦程式,用以執行一種應用於檢測系統中之一檢測方法,其中該檢測方法包括:反編譯一第一應用程式封裝檔,以產生複數個第一反編譯檔案,且該些第一反編譯檔案包含一第一反編譯程式碼;比對該第一反編譯程式碼與一第二應用程式封裝檔之一第二反編譯程式碼,分析該第一反編譯程式碼與該第二反編譯程式碼之一相異程式區段,依據該第一反編譯程式碼之一函式呼叫流程以分類出對應該相異程式區段的一程式異動類型;載入一異動類型與規則對照表,並選取該異動類型與規則對照表中之對應該程式異動類型的至少一檢測規則;依據該至少一檢測規則選擇性地更新或建立一資料流程,並依據該資料流程確認該第一反編譯程式碼之一檢測範圍;以及 檢測該檢測範圍,以產生一安全性檢測結果。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW104141780A TWI611349B (zh) | 2015-12-11 | 2015-12-11 | 檢測系統及其方法 |
CN201610103903.1A CN106874180B (zh) | 2015-12-11 | 2016-02-25 | 检测系统及其方法 |
US15/186,529 US10489591B2 (en) | 2015-12-11 | 2016-06-19 | Detection system and method thereof |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW104141780A TWI611349B (zh) | 2015-12-11 | 2015-12-11 | 檢測系統及其方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201721418A TW201721418A (zh) | 2017-06-16 |
TWI611349B true TWI611349B (zh) | 2018-01-11 |
Family
ID=59018729
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW104141780A TWI611349B (zh) | 2015-12-11 | 2015-12-11 | 檢測系統及其方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10489591B2 (zh) |
CN (1) | CN106874180B (zh) |
TW (1) | TWI611349B (zh) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9727736B1 (en) * | 2014-10-17 | 2017-08-08 | Amazon Technologies, Inc. | Tracking developer behavior with respect to software analysis tools |
US9703789B2 (en) | 2015-07-27 | 2017-07-11 | Sas Institute Inc. | Distributed data set storage and retrieval |
WO2017175157A1 (en) * | 2016-04-06 | 2017-10-12 | Karamba Security | Secure controller operation and malware prevention |
US10678907B2 (en) * | 2017-01-26 | 2020-06-09 | University Of South Florida | Detecting threats in big data platforms based on call trace and memory access patterns |
KR20180119857A (ko) * | 2017-04-26 | 2018-11-05 | 현대자동차주식회사 | 소프트웨어 변경 영향성 분석 방법 및 장치 |
JP7068941B2 (ja) * | 2018-06-22 | 2022-05-17 | アズビル株式会社 | プログラム比較装置、プログラム比較方法および比較プログラム |
TWI661355B (zh) * | 2018-08-03 | 2019-06-01 | 中華電信股份有限公司 | 上下文相關之資料結構逆向工程系統及其方法 |
CN109325052B (zh) * | 2018-09-29 | 2021-06-04 | 创新先进技术有限公司 | 一种数据处理方法及装置 |
CN110175045A (zh) * | 2019-05-20 | 2019-08-27 | 北京邮电大学 | 安卓应用程序重打包数据处理方法及装置 |
CN110865806B (zh) * | 2019-11-20 | 2023-08-18 | 腾讯科技(深圳)有限公司 | 代码处理方法、装置、服务器及存储介质 |
CN111459822B (zh) * | 2020-04-01 | 2023-10-03 | 抖音视界有限公司 | 系统组件数据的提取方法、装置、设备及可读介质 |
US11610000B2 (en) * | 2020-10-07 | 2023-03-21 | Bank Of America Corporation | System and method for identifying unpermitted data in source code |
WO2022133474A1 (en) * | 2020-12-16 | 2022-06-23 | Virsec Systems, Inc. | Software build system protection engine |
US11556452B2 (en) * | 2021-03-31 | 2023-01-17 | Bank Of America Corporation | System for software compiler integrity verification |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120072968A1 (en) * | 2007-02-16 | 2012-03-22 | Wysopal Christopher J | Assessment and analysis of software security flaws in virtual machines |
CN103092761A (zh) * | 2013-02-05 | 2013-05-08 | 烽火通信科技股份有限公司 | 基于差异信息文件识别和检查修改代码块的方法及装置 |
TW201426381A (zh) * | 2012-12-26 | 2014-07-01 | Univ Nat Taiwan Science Tech | 惡意程式偵測方法與系統 |
CN104751054A (zh) * | 2013-12-31 | 2015-07-01 | 贝壳网际(北京)安全技术有限公司 | 恶意程序的识别方法及装置、移动终端 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7814544B1 (en) * | 2006-06-22 | 2010-10-12 | Symantec Corporation | API-profile guided unpacking |
CN101304409B (zh) * | 2008-06-28 | 2011-04-13 | 成都市华为赛门铁克科技有限公司 | 恶意代码检测方法及系统 |
US9003529B2 (en) * | 2012-08-29 | 2015-04-07 | The Johns Hopkins University | Apparatus and method for identifying related code variants in binaries |
CN103699844B (zh) * | 2012-09-28 | 2016-10-26 | 腾讯科技(深圳)有限公司 | 安全保护系统及方法 |
US8850581B2 (en) * | 2012-11-07 | 2014-09-30 | Microsoft Corporation | Identification of malware detection signature candidate code |
US9367702B2 (en) * | 2013-03-12 | 2016-06-14 | Commvault Systems, Inc. | Automatic file encryption |
CN104102879B (zh) * | 2013-04-15 | 2016-08-17 | 腾讯科技(深圳)有限公司 | 一种消息格式的提取方法和装置 |
US10460112B2 (en) * | 2014-02-07 | 2019-10-29 | Northwestern University | System and method for privacy leakage detection and prevention system without operating system modification |
CN104021346B (zh) * | 2014-06-06 | 2017-02-22 | 东南大学 | 基于程序流程图的Android恶意软件检测方法 |
US9971582B2 (en) * | 2015-06-23 | 2018-05-15 | Ca, Inc. | Selecting application wrapper logic components based on features of a mobile application to be wrapped |
US9881142B2 (en) * | 2015-09-11 | 2018-01-30 | Patrick Robert Koren | Method and apparatus for preventing and investigating software piracy |
-
2015
- 2015-12-11 TW TW104141780A patent/TWI611349B/zh active
-
2016
- 2016-02-25 CN CN201610103903.1A patent/CN106874180B/zh active Active
- 2016-06-19 US US15/186,529 patent/US10489591B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120072968A1 (en) * | 2007-02-16 | 2012-03-22 | Wysopal Christopher J | Assessment and analysis of software security flaws in virtual machines |
TW201426381A (zh) * | 2012-12-26 | 2014-07-01 | Univ Nat Taiwan Science Tech | 惡意程式偵測方法與系統 |
CN103092761A (zh) * | 2013-02-05 | 2013-05-08 | 烽火通信科技股份有限公司 | 基于差异信息文件识别和检查修改代码块的方法及装置 |
CN104751054A (zh) * | 2013-12-31 | 2015-07-01 | 贝壳网际(北京)安全技术有限公司 | 恶意程序的识别方法及装置、移动终端 |
Also Published As
Publication number | Publication date |
---|---|
CN106874180A (zh) | 2017-06-20 |
CN106874180B (zh) | 2020-09-11 |
US20170169223A1 (en) | 2017-06-15 |
TW201721418A (zh) | 2017-06-16 |
US10489591B2 (en) | 2019-11-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI611349B (zh) | 檢測系統及其方法 | |
EP2472425B1 (en) | System and method for detecting unknown malware | |
CN105446723B (zh) | 用于标识源代码版本之间的语义区别的方法和装置 | |
US9449175B2 (en) | Method and apparatus for analyzing and detecting malicious software | |
WO2016027641A1 (ja) | 脆弱性発見装置、脆弱性発見方法、及び脆弱性発見プログラム | |
US10956151B2 (en) | Apparatus and method for identifying constituent parts of software binaries | |
US8875303B2 (en) | Detecting pirated applications | |
TWI528216B (zh) | 隨選檢測惡意程式之方法、電子裝置、及使用者介面 | |
US9389852B2 (en) | Technique for plagiarism detection in program source code files based on design pattern | |
Palahan et al. | Extraction of statistically significant malware behaviors | |
KR102006242B1 (ko) | 바이너리 파일에 기초하여 오픈소스 소프트웨어 패키지를 식별하는 방법 및 시스템 | |
KR20160109870A (ko) | 안드로이드 멀웨어의 고속 검색 시스템 및 방법 | |
US20180293330A1 (en) | Malware label inference and visualization in a large multigraph | |
JP6977724B2 (ja) | シグネチャ作成装置、シグネチャ作成方法、シグネチャ作成プログラム、及び、ソフトウェア判定システム | |
JP7314243B2 (ja) | マルウェアの悪意ある行為フィーチャー情報を生成する方法 | |
US10685298B2 (en) | Mobile application compatibility testing | |
KR20180133726A (ko) | 특징 벡터를 이용하여 데이터를 분류하는 장치 및 방법 | |
US9646157B1 (en) | Systems and methods for identifying repackaged files | |
KR101461051B1 (ko) | 웹 기능 분석을 통한 악성 코드 탐지방법 및 그 기록매체 | |
US20170132413A1 (en) | File clustering using filters working over file attributes | |
CN108804308B (zh) | 新版本程序缺陷检测方法及装置 | |
CN110059328B (zh) | 结构分析模拟方法、信息处理设备和计算机可读存储介质 | |
TWI715647B (zh) | 用於智慧財產(ip)指紋法與ip dna分析之系統及方法 | |
CN105279434A (zh) | 恶意程序样本家族命名方法及装置 | |
KR101480244B1 (ko) | 클래스 단위의 시그니처를 이용한 악성 어플리케이션 탐지 방법 및 장치 |