检测系统及其方法与流程

文档序号:12719343阅读:308来源:国知局
检测系统及其方法与流程

本发明是有关于一种检测系统及其方法,且特别是有关于一种关于检测应用程序改版的检测系统及其方法。



背景技术:

随着应用程序的普及,各种电子装置上的应用程序的改版也日益频繁。目前的应用程序检测系统主要是提出应用程序的拆解方法,使程序开发者可在取得程序原始码后,搭配判断应用函数介面(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无须将整个第一反编译程序码都进行检测,故本案可达到节省检测时间与人力的效果。

通过上述技术方案,可检测出改版前应用程序与新版应用程序的相异程序区段,故只需检测此相异程序区段及与此相异程序区段相关的程序部分,即可取得此新版应用程序的安全性检测结果,换言之,本案的检测系统无需检测整体新版的应用程序,因此,本案避免了检测资源的重复耗用,且提供了一种更有效率的检测系统及其方法。

虽然本发明已以较佳实施例揭露如上,然其并非用以限定本发明,任何熟悉此项技艺者,在不脱离本发明的精神和范围内,当可做些许更动与润饰,因此本发明的保护范围当视所附的权利要求书所界定的范围为准。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1