CN106874180B - 检测系统及其方法 - Google Patents
检测系统及其方法 Download PDFInfo
- Publication number
- CN106874180B CN106874180B CN201610103903.1A CN201610103903A CN106874180B CN 106874180 B CN106874180 B CN 106874180B CN 201610103903 A CN201610103903 A CN 201610103903A CN 106874180 B CN106874180 B CN 106874180B
- Authority
- CN
- China
- Prior art keywords
- program
- rule
- program code
- decompilation
- transaction
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000001514 detection method Methods 0.000 title claims abstract description 127
- 238000000034 method Methods 0.000 title claims abstract description 24
- 230000004048 modification Effects 0.000 claims description 4
- 238000012986 modification Methods 0.000 claims description 4
- 230000000694 effects Effects 0.000 abstract description 2
- 230000006870 function Effects 0.000 description 80
- 230000004075 alteration Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 238000012797 qualification Methods 0.000 description 4
- 238000012360 testing method Methods 0.000 description 4
- 230000002159 abnormal effect Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000012856 packing Methods 0.000 description 1
- 230000008569 process Effects 0.000 description 1
Images
Classifications
-
- 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/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
- 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
Abstract
一种检测系统及其方法。检测方法包含:反编译一第一应用程序封装档,以产生多个第一反编译文件,且第一反编译文件包含一第一反编译程序码;比对第一反编译程序码与一第二应用程序封装档的一第二反编译程序码,分析第一反编译程序码与一第二反编译程序码的一相异程序区段,依据第一反编译程序码的一函数呼叫流程以分类出对应相异程序区段的一程序异动类型;载入一异动类型与规则对照表,并选取异动类型与规则对照表中的对应程序异动类型的至少一检测规则;依据至少一检测规则确认第一反编译程序码的一检测范围;以及检测此检测范围,以产生一安全性检测结果。借此,可更有效率的进行检测,并达到避免检测资源的重复耗用的效果。
Description
技术领域
本发明是有关于一种检测系统及其方法,且特别是有关于一种关于检测应用程序改版的检测系统及其方法。
背景技术
随着应用程序的普及,各种电子装置上的应用程序的改版也日益频繁。目前的应用程序检测系统主要是提出应用程序的拆解方法,使程序开发者可在取得程序原始码后,搭配判断应用函数介面(Application Programming Interface,API)的呼叫权重,以判断是否此应用程序为恶意程序。此外,于一些传统的检测系统中,是于解构应用程序后,利用搜寻程序码中的关键词,搭配统计的学习机制,以判断某两个应用程序之间的相似度。
然而,在众多应用程序频繁改版的情况下,若要将新版的应用程序的整体进行检测,并判断此新版的应用程序是否具安全性,则需要耗用庞大的人力资源与时间资源,才能将每个新版的应用程序一一完成检测。因此,如何有效率的检测新版的应用程序,即是本领域相关人员所需解决的问题。
发明内容
为解决上述的问题,本发明的一方面提供一种检测系统。检测系统包含:一反编译模块、一改版程序异动比对及分类模块及一资安检测模块。反编译模块用以反编译一第一应用程序封装档,以产生多个第一反编译文件,且第一反编译文件包含一第一反编译程序码。改版程序异动比对及分类模块用以比对第一反编译程序码与一第二应用程序封装档的一第二反编译程序码,分析第一反编译程序码与第二反编译程序码的一相异程序区段,依据第一反编译程序码的一函数呼叫流程以分类出对应相异程序区段的一程序异动类型,并载入一异动类型与规则对照表,以及选取异动类型与规则对照表中的对应程序异动类型的至少一检测规则。资安检测模块用以依据至少一检测规则选择性地更新或建立一数据流程,并依据数据流程确认第一反编译程序码的一检测范围,以及检测此检测范围,以产生一安全性检测结果。
本发明的另一方面提供一种检测方法。检测方法包含:反编译一第一应用程序封装档,以产生多个第一反编译文件,且第一反编译文件包含一第一反编译程序码;比对第一反编译程序码与一第二应用程序封装档的一第二反编译程序码,分析第一反编译程序码与第二反编译程序码的一相异程序区段,依据第一反编译程序码的一函数呼叫流程以分类出对应相异程序区段的一程序异动类型;载入一异动类型与规则对照表,并选取异动类型与规则对照表中的对应程序异动类型的至少一检测规则;依据至少一检测规则选择性地更新或建立一数据流程,并依据数据流程确认第一反编译程序码的一检测范围;以及检测此检测范围,以产生一安全性检测结果。
综上所述,本发明的技术方案与现有技术相比具有明显的优点和有益效果。通过上述技术方案,可达到相当的技术进步,并具有产业上的广泛利用价值。本发明可检测出改版前应用程序与新版应用程序的相异程序区段,故只需检测此相异程序区段及与此相异程序区段相关的程序部分,即可取得此新版应用程序的安全性检测结果,换言之,本案的检测系统无需检测整体新版的应用程序,因此,本案避免了检测资源的重复耗用,且提供了一种更有效率的检测系统及其方法。
附图说明
为让本发明的上述和其他目的、特征、优点与实施例能更明显易懂,所附附图的说明如下:
图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无须将整个第一反编译程序码都进行检测,故本案可达到节省检测时间与人力的效果。
通过上述技术方案,可检测出改版前应用程序与新版应用程序的相异程序区段,故只需检测此相异程序区段及与此相异程序区段相关的程序部分,即可取得此新版应用程序的安全性检测结果,换言之,本案的检测系统无需检测整体新版的应用程序,因此,本案避免了检测资源的重复耗用,且提供了一种更有效率的检测系统及其方法。
虽然本发明已以较佳实施例揭露如上,然其并非用以限定本发明,任何熟悉此项技艺者,在不脱离本发明的精神和范围内,当可做些许更动与润饰,因此本发明的保护范围当视所附的权利要求书所界定的范围为准。
Claims (14)
1.一种检测系统,其特征在于,包含:
一反编译模块,用以反编译一第一应用程序封装档,以产生多个第一反编译文件,且所述第一反编译文件包含一第一反编译程序码;
一改版程序异动比对及分类模块,用以比对该第一反编译程序码与一第二应用程序封装档的一第二反编译程序码,分析该第一反编译程序码与该第二反编译程序码的一相异程序区段,依据该第一反编译程序码的一函数呼叫流程以分类出对应该相异程序区段的一程序异动类型,并载入一异动类型与规则对照表,以及选取该异动类型与规则对照表中的对应该程序异动类型的至少一检测规则,该程序异动类型包含为一参数值异动类型、一单一函数的呼叫异动类型或一函数呼叫流程异动类型三者至少其中之一;以及
一资安检测模块,用以依据该至少一检测规则选择性地更新或建立一数据流程,并依据该数据流程确认该第一反编译程序码的一检测范围,以及检测该检测范围,以产生一安全性检测结果,
其中该第一反编译程序码为一新版应用程序封装档的反编译程序码,该第二反编译程序码为一旧版应用程序封装档的反编译程序码,
其中该参数值异动类型为当该第一反编译程序码与该第二反编译程序码都具有一特定参数,当该特定参数的值在该第一反编译程序码被更改为另一值时,
该单一函数的呼叫异动类型为当该第一反编译程序码具有一特定函数,而该第二反编译程序码不具有该特定函数,或当该第一反编译程序码不具有该特定函数,而该第二反编译程序码具有该特定函数,以及
该函数呼叫流程异动类型为该第二反编译程序码的一函数呼叫流程中的至少一函数,在该第一反编译程序码被更改为另一函数。
2.根据权利要求1所述的检测系统,其特征在于,该第一应用程序封装档为一新版应用程序封装档,该第二应用程序封装档为一旧版应用程序封装档;该旧版应用程序封装档储存在一储存装置中,该旧版应用程序封装档包含一旧版应用程序封装档信息,该旧版应用程序封装档信息包含该旧版应用程序封装档的一建立日期、一修改日期、一文件大小、一文件类型、一前次存取日期及一文件位置及多个第二反编译文件。
3.根据权利要求2所述的检测系统,其特征在于,还包含:
一报表模块,用以依据该安全性检测结果产生一报表;
其中,该储存装置更用以储存该异动类型与规则对照表、该报表、该至少一检测规则、该旧版应用程序封装档信息及该安全性检测结果。
4.根据权利要求2所述的检测系统,其特征在于,该储存装置的一数据库存在所述第二反编译文件,所述第二反编译文件对应该第二应用程序封装档,其中,所述第二反编译文件包含该第二反编译程序码;该改版程序异动比对及分类模块更用以比对所述第一反编译文件及所述第二反编译文件,以取得所述第一反编译文件中的一异动文件,且该异动文件包含该第一反编译程序码。
5.根据权利要求1所述的检测系统,其特征在于,当该改版程序异动比对及分类模块分析该第一反编译程序码与该第二反编译程序码的该相异程序区段中包含一参数值异动时,该程序异动类型被分类为该参数值异动类型;
当该改版程序异动比对及分类模块分析该第一反编译程序码与该第二反编译程序码的该相异程序区段中包含一单一函数的呼叫异动时,该程序异动类型被分类为该单一函数的呼叫异动类型;以及
当该改版程序异动比对及分类模块分析该第一反编译程序码与该第二反编译程序码的该相异程序区段中包含一函数呼叫流程异动时,该程序异动类型被分类为该函数呼叫流程异动类型。
6.根据权利要求1所述的检测系统,其特征在于,该至少一检测规则包含一第一规则、一第二规则及一第三规则,且该改版程序异动比对及分类模块选取对应该程序异动类型的该第一规则、该第二规则或该第三规则三者至少其中之一。
7.根据权利要求1所述的检测系统,其特征在于,该至少一检测规则包含一第一规则、一第二规则及一第三规则,且该参数值异动类型对应至该第一规则,该单一函数的呼叫异动类型对应至该第二规则,该函数呼叫流程异动类型对应至该第三规则。
8.一种检测方法,其特征在于,包含:
反编译一第一应用程序封装档,以产生多个第一反编译文件,且所述第一反编译文件包含一第一反编译程序码;
比对该第一反编译程序码与一第二应用程序封装档的一第二反编译程序码,分析该第一反编译程序码与该第二反编译程序码的一相异程序区段,依据该第一反编译程序码的一函数呼叫流程以分类出对应该相异程序区段的一程序异动类型,该程序异动类型包含为一参数值异动类型、一单一函数的呼叫异动类型或一函数呼叫流程异动类型三者至少其中之一;
载入一异动类型与规则对照表,并选取该异动类型与规则对照表中的对应该程序异动类型的至少一检测规则;
依据该至少一检测规则选择性地更新或建立一数据流程,并依据该数据流程确认该第一反编译程序码的一检测范围;以及
检测该检测范围,以产生一安全性检测结果,
其中该第一反编译程序码为一新版应用程序封装档的反编译程序码,该第二反编译程序码为一旧版应用程序封装档的反编译程序码,
其中该参数值异动类型为当该第一反编译程序码与该第二反编译程序码都具有一特定参数,当该特定参数的值在该第一反编译程序码被更改为另一值时,
该单一函数的呼叫异动类型为当该第一反编译程序码具有一特定函数,而该第二反编译程序码不具有该特定函数,或当该第一反编译程序码不具有该特定函数,而该第二反编译程序码具有该特定函数,以及
该函数呼叫流程异动类型为该第二反编译程序码的一函数呼叫流程中的至少一函数,在该第一反编译程序码被更改为另一函数。
9.根据权利要求8所述的检测方法,其特征在于,该第一应用程序封装档为一新版应用程序封装档,该第二应用程序封装档为一旧版应用程序封装档;该旧版应用程序封装档储存在一储存装置中,该旧版应用程序封装档包含一旧版应用程序封装档信息,该旧版应用程序封装档信息包含该旧版应用程序封装档的一建立日期、一修改日期、一文件大小、一文件类型、一前次存取日期及一文件位置及多个第二反编译文件。
10.根据权利要求9所述的检测方法,其特征在于,还包含:
依据该安全性检测结果产生一报表;
储存该异动类型与规则对照表、该报表、该至少一检测规则、该旧版应用程序封装档信息及该安全性检测结果于该储存装置中。
11.根据权利要求9所述的检测方法,其特征在于,该储存装置的一数据库存在所述第二反编译文件,所述第二反编译文件对应该第二应用程序封装档其中,所述第二反编译文件包含该第二反编译程序码;以及
比对所述第一反编译文件及所述第二反编译文件,以取得所述第一反编译文件中的一异动文件,且该异动文件包含该第一反编译程序码。
12.根据权利要求8所述的检测方法,其特征在于,于分析该第一反编译程序码与该第二反编译程序码的该相异程序区段,依据该第一反编译程序码的该函数呼叫流程以分类出对应该相异程序区段的该程序异动类型的步骤中,还包含:
分析该第一反编译程序码与该第二反编译程序码的该相异程序区段中包含一参数值异动时,该程序异动类型被分类为该参数值异动类型;
分析该第一反编译程序码与该第二反编译程序码的该相异程序区段中包含一单一函数的呼叫异动时,该程序异动类型被分类为该单一函数的呼叫异动类型;以及
分析该第一反编译程序码与该第二反编译程序码的该相异程序区段中包含一函数呼叫流程异动时,该程序异动类型被分类为该函数呼叫流程异动类型。
13.根据权利要求8所述的检测方法,其特征在于,该至少一检测规则包含一第一规则、一第二规则及一第三规则,且其中该选取该异动类型与规则对照表中的对应该程序异动类型的该至少一检测规则的步骤还包含:
选取对应该程序异动类型的该第一规则、该第二规则或该第三规则三者至少其中之一。
14.根据权利要求8所述的检测方法,其特征在于,该至少一检测规则包含一第一规则、一第二规则及一第三规则,且该参数值异动类型对应至该第一规则,该单一函数的呼叫异动类型对应至该第二规则,该函数呼叫流程异动类型对应至该第三规则。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW104141780 | 2015-12-11 | ||
TW104141780A TWI611349B (zh) | 2015-12-11 | 2015-12-11 | 檢測系統及其方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106874180A CN106874180A (zh) | 2017-06-20 |
CN106874180B true CN106874180B (zh) | 2020-09-11 |
Family
ID=59018729
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610103903.1A Active CN106874180B (zh) | 2015-12-11 | 2016-02-25 | 检测系统及其方法 |
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 (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101304409A (zh) * | 2008-06-28 | 2008-11-12 | 华为技术有限公司 | 恶意代码检测方法及系统 |
CN103092761A (zh) * | 2013-02-05 | 2013-05-08 | 烽火通信科技股份有限公司 | 基于差异信息文件识别和检查修改代码块的方法及装置 |
CN104021346A (zh) * | 2014-06-06 | 2014-09-03 | 东南大学 | 基于程序流程图的Android恶意软件检测方法 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7814544B1 (en) * | 2006-06-22 | 2010-10-12 | Symantec Corporation | API-profile guided unpacking |
US8613080B2 (en) * | 2007-02-16 | 2013-12-17 | Veracode, Inc. | Assessment and analysis of software security flaws in virtual machines |
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 |
TWI461952B (zh) * | 2012-12-26 | 2014-11-21 | Univ Nat Taiwan Science Tech | 惡意程式偵測方法與系統 |
US9367702B2 (en) * | 2013-03-12 | 2016-06-14 | Commvault Systems, Inc. | Automatic file encryption |
CN104102879B (zh) * | 2013-04-15 | 2016-08-17 | 腾讯科技(深圳)有限公司 | 一种消息格式的提取方法和装置 |
CN104751054B (zh) * | 2013-12-31 | 2018-09-14 | 北京猎豹移动科技有限公司 | 恶意程序的识别方法及装置、移动终端 |
US10460112B2 (en) * | 2014-02-07 | 2019-10-29 | Northwestern University | System and method for privacy leakage detection and prevention system without operating system modification |
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 (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101304409A (zh) * | 2008-06-28 | 2008-11-12 | 华为技术有限公司 | 恶意代码检测方法及系统 |
CN103092761A (zh) * | 2013-02-05 | 2013-05-08 | 烽火通信科技股份有限公司 | 基于差异信息文件识别和检查修改代码块的方法及装置 |
CN104021346A (zh) * | 2014-06-06 | 2014-09-03 | 东南大学 | 基于程序流程图的Android恶意软件检测方法 |
Non-Patent Citations (1)
Title |
---|
基于Snort的入侵检测系统的分析与设计;寸江涛;《保山学院学报》;20141031;第3页 * |
Also Published As
Publication number | Publication date |
---|---|
CN106874180A (zh) | 2017-06-20 |
US20170169223A1 (en) | 2017-06-15 |
TW201721418A (zh) | 2017-06-16 |
US10489591B2 (en) | 2019-11-26 |
TWI611349B (zh) | 2018-01-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106874180B (zh) | 检测系统及其方法 | |
US11727117B2 (en) | Vulnerability analyzer for application dependencies in development pipelines | |
US10152594B2 (en) | Method and device for identifying virus APK | |
CN109076107B (zh) | 基于检测定制提供用户体验升级的自动检测和优化 | |
US8819644B2 (en) | Selective data flow analysis of bounded regions of computer software applications | |
US20160142437A1 (en) | Method and system for preventing injection-type attacks in a web based operating system | |
US10956151B2 (en) | Apparatus and method for identifying constituent parts of software binaries | |
KR20120078018A (ko) | 파일 유전자 지도를 이용하여 파일의 악성코드 포함 여부를 판단하는 방법 및 시스템 | |
CN111190603B (zh) | 一种隐私数据检测方法、装置和计算机可读存储介质 | |
CN102799437B (zh) | 一种编译脚本自动生成方法和自动生成装置 | |
CN114077741A (zh) | 软件供应链安全检测方法和装置、电子设备及存储介质 | |
US10229273B2 (en) | Identifying components for static analysis of software applications | |
US20210405980A1 (en) | Long method autofix engine | |
CN104252594A (zh) | 病毒检测方法和装置 | |
CN114462044A (zh) | 一种基于污点分析的uefi固件漏洞静态检测方法及装置 | |
CN111046388B (zh) | 识别应用中第三方sdk的方法、智能终端及储存介质 | |
EP4184330A1 (en) | Code analysis method and system, and computing device | |
US10248789B2 (en) | File clustering using filters working over file attributes | |
CN109933976B (zh) | 一种安卓应用相似性检测方法、移动终端及存储装置 | |
CN108710492B (zh) | 一种识别app程序中第三方库的方法 | |
US9335990B2 (en) | Method, a system, and a non-transitory computer-readable medium for supporting application development | |
US11550925B2 (en) | Information security system for identifying potential security threats in software package deployment | |
CN111552474B (zh) | 执行分布式锁操作的处理方法及装置 | |
CN114527993A (zh) | 应用程序部署方法、装置、设备及介质 | |
CN112699372A (zh) | 漏洞处理方法、装置和计算机可读存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |