CN104657661B - 移动终端中恶意代码的检测方法和装置 - Google Patents
移动终端中恶意代码的检测方法和装置 Download PDFInfo
- Publication number
- CN104657661B CN104657661B CN201510037893.1A CN201510037893A CN104657661B CN 104657661 B CN104657661 B CN 104657661B CN 201510037893 A CN201510037893 A CN 201510037893A CN 104657661 B CN104657661 B CN 104657661B
- Authority
- CN
- China
- Prior art keywords
- code
- function
- malicious code
- mobile terminal
- structures
- 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
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/562—Static detection
- G06F21/563—Static detection by source code analysis
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Virology (AREA)
- Health & Medical Sciences (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Health & Medical Sciences (AREA)
- Telephone Function (AREA)
- Mobile Radio Communication Systems (AREA)
Abstract
本发明公开了一种移动终端中恶意代码的检测方法,包括:获取移动终端中的可执行文件,并获取可执行文件中的函数以及函数的opcode代码段内容;对函数的opcode代码段内容进行反汇编解析以获取opcode代码段内容中的数据流信息;根据数据流信息生成对应的特征码,并检测特征码是否存在于预设的恶意代码特征库中;以及如果检测特征码存在于预设的恶意代码特征库中,则判断移动终端中具有恶意代码。本发明实施例的方法,通过从程序数据流的角度对恶意代码进行检测,能够取得更好地检测效果,提高检测结果的准确度。本发明还公开了一种移动终端中恶意代码的检测装置。
Description
技术领域
本发明涉及移动终端设备技术领域,尤其涉及一种移动终端中恶意代码的检测方法和装置。
背景技术
随着Android操作系统的发展,对于Android操作系统中恶意代码检测的研究成果也层出不穷,目前检测手段已经深入到opcode层面。其中,opcode是Android操作系统中可执行文件Dex的代码指令,其基本格式为:
A/OP | Index | Arg |
其中,A为配置部分,OP为当前指令的类型,如加减乘除等,Index为调用函数的索引或当前指令的静态数据索引,Arg部分则是参数寄存器相关的定义和指令。
相关技术中,利用opcode对Android操作系统进行恶意代码检测的方式可包括:(1)利用opcode指令中的OP指令或者OP指令及Index段对应内容,进行恶意代码检测;(2)利用opcode指令中的调用关系,找到敏感API的调用链,然后对调用链进行检测。
可以看出,上述两种方式都是利用了opcode中的OP指令部分,从程序控制流的角度进行检测。但是,对于控制流特征微弱的恶意代码,上述两种方式均无法对其进行很好的检测,可能导致恶意代码检测不出来,检测效果差。
发明内容
本发明的目的旨在至少在一定程度上解决相关技术中的技术问题之一。
为此,本发明的第一个目的在于提出一种移动终端中恶意代码的检测方法。该方法通过从程序数据流的角度对恶意代码进行检测,能够取得更好地检测效果,提高检测结果的准确度。
本发明的第二个目的在于提出一种移动终端中恶意代码的检测装置。
为了实现上述目的,本发明第一方面实施例的移动终端中恶意代码的检测方法,包括:获取移动终端中的可执行文件,并获取所述可执行文件中的函数以及所述函数的opcode代码段内容;对所述函数的opcode代码段内容进行反汇编解析以获取所述opcode代码段内容中的数据流信息;根据所述数据流信息生成对应的特征码,并检测所述特征码是否存在于预设的恶意代码特征库中;以及如果检测所述特征码存在于所述预设的恶意代码特征库中,则判断所述移动终端中具有恶意代码。
根据本发明实施例的移动终端中恶意代码的检测方法,可先获取移动终端中的可执行文件,并获取可执行文件中的函数以及函数的opcode代码段内容,之后可对函数的opcode代码段内容进行反汇编解析以获取opcode代码段内容中的数据流信息,并根据数据流信息生成对应的特征码,以及检测特征码是否存在于预设的恶意代码特征库中,如果是,则判断移动终端中具有恶意代码,由于数据流表示程序执行过程中所涉及到的相关数据的特征与变化,所以在整个检测过程中,通过从程序数据流的角度对恶意代码进行检测,能够取得更好地检测效果,提高检测结果的准确度。
为了实现上述目的,本发明第二方面实施例的移动终端中恶意代码的检测装置,包括:第一获取模块,用于获取移动终端中的可执行文件,并获取所述可执行文件中的函数以及所述函数的opcode代码段内容;第二获取模块,用于对所述函数的opcode代码段内容进行反汇编解析以获取所述opcode代码段内容中的数据流信息;生成模块,用于根据所示数据流信息生成对应的特征码;检测模块,用于检测所述特征码是否存在于预设的恶意代码特征库中;以及判断模块,用于在检测所述特征码存在于所述预设的恶意代码特征库中时,判断所述移动终端中具有恶意代码。
根据本发明实施例的移动终端中恶意代码的检测装置,可通过第一获取模块获取移动终端中的可执行文件,并获取可执行文件中的函数以及函数的opcode代码段内容,第二获取模块对函数的opcode代码段内容进行反汇编解析以获取opcode代码段内容中的数据流信息,生成模块根据数据流信息生成对应的特征码,检测模块检测特征码是否存在于预设的恶意代码特征库中,如果是,则判断模块判断移动终端中具有恶意代码,由于数据流表示程序执行过程中所涉及到的相关数据的特征与变化,所以在整个检测过程中,通过从程序数据流的角度对恶意代码进行检测,能够取得更好地检测效果,提高检测结果的准确度。
本发明附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
本发明上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中,
图1是根据本发明一个实施例的移动终端中恶意代码的检测方法的流程图;
图2是根据本发明一个实施例的可执行文件中的函数以及函数的opcode代码段内容的获取过程的流程图;
图3是根据本发明实施例的可执行文件DEX中各结构体的示例图;
图4是根据本发明一个实施例的移动终端中恶意代码的检测装置的结构示意图;以及
图5是根据本发明另一个实施例的移动终端中恶意代码的检测装置的结构示意图。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本发明,而不能理解为对本发明的限制。
目前,可利用opcode对Android操作系统进行恶意代码检测,一般可通过以下两种方式实现:(1)利用opcode指令中的OP指令或者OP指令及Index段对应内容,进行恶意代码检测;(2)利用opcode指令中的调用关系,找到敏感API的调用链,然后对调用链进行检测。可以看出,上述两种方式都是利用了opcode中的OP指令部分,从程序控制流的角度进行检测。但是,对于控制流特征微弱的恶意代码,上述两种方式均无法对其进行很好的检测,可能导致恶意代码检测不出来,检测效果差。
为此,针对已有技术所存在的问题,本发明提出了一种移动终端中恶意代码的检测方法和装置,其从数据流的角度对恶意代码进行检测,从而可以取得更好的检出效果。具体地,下面参考附图描述本发明实施例的移动终端中恶意代码的检测方法和装置。
图1是根据本发明一个实施例的移动终端中恶意代码的检测方法的流程图。如图1所示,该移动终端中恶意代码的检测方法可以包括:
S101,获取移动终端中的可执行文件,并获取可执行文件中的函数以及函数的opcode代码段内容。
其中,在本发明的实施例中,移动终端的操作系统可为Android操作系统,可执行文件的格式类型可为DEX。需要说明的是,在本发明的实施例中,移动终端可以是手机、平板电脑等具有Android操作系统的硬件设备。
具体而言,在本发明的实施例中,对可执行文件进行解析以获取可执行文件中的结构体,并扫描结构体以获取可执行文件中的函数以及函数的opcode代码段内容。
更具体地,如图2所示,对可执行文件进行解析以获取可执行文件中的结构体,并扫描结构体以获取可执行文件中的函数以及函数的opcode代码段内容的具体实现过程可包括如下步骤:
S201,读取可执行文件以获取可执行文件中的DexFile结构体,并根据DexFile结构体中的指针pClassDefs获取可执行文件的类结构体数组,其中,类结构体数组由至少一个DexClassDef结构体组成。
具体地,可先读取可执行文件DEX以获取DexFile结构体,之后,可根据DexFile结构体中的pClassDefs指针找到类结构体数组,其中,该类结构体数组中的每个元素都是DexClassDef结构体。
S202,遍历类结构体数组,根据每个DexClassDef结构体中的classDataOff获取类数据结构体DexClassData。
具体地,从类结构体数组中取出一个元素,即取出一个DexClassDef结构体,并根据该DexClassDef结构体中的classDataOff找到类数据结构体DexClassData。应当理解,在本发明的实施例中,如果类结构体数组遍历结束,即类结构体数组中的元素全部被取出,则说明本次恶意代码检测结束。
S203,取出类数据结构体DexClassData中的directMethods和/或virtualMethods,并根据directMethods和/或virtualMethods获取对应的类函数结构体数组,其中,类函数结构体数组由至少一个DexMethod结构体组成,每个DexMethod结构体对应一个函数。
具体地,取出类数据结构体DexClassData中的directMethods和/或virtualMethods,找到其对应的类函数结构体数组,该类函数结构体数组中的每个元素都是DexMethod结构体,其中,一个DexMethod结构体对应一个函数,该函数即为可执行文件DEX中的函数。
应当理解,在本发明的实施例中,如果该类数据结构体DexClassData中的directMethods和/或virtualMethods都已经被提取过,则可从类结构体数组中取出下一个元素,即取出下一个DexClassDef结构体,并根据下一个DexClassDef结构体中的classDataOff,找到其对应的类数据结构体DexClassData。
S204,遍历类函数结构体数组,根据每个DexMethod结构体中的codeoff获取DexCode结构体,并根据DexCode结构体中的insns和insnsSize获取DexCode结构体对应的函数的opcode代码段内容。
具体地,可从类函数结构体数组中取出一个DexMethod结构体,该DexMethod结构体中的codeoff指向一个DexCode结构体,DexCode结构体中的insns和insnsSize分别为本函数的opcode代码段内容,其中,该opcode代码段内容可包括opcode的偏移和长度。
应当理解,在本发明的实施例中,如果类函数结构体数组中的DexMethod结构体已经全部被取出,则从DexClassData结构体中取出下一个directMethods和/或virtualMethods,并根据下一个directMethods和/或virtualMethods找到对应的类函数结构体数组。
由此,通过获取并遍历可执行文件中的所有结构体以得到该可执行文件中的所有函数以及该函数的opcode代码段内容。
S102,对函数的opcode代码段内容进行反汇编解析以获取opcode代码段内容中的数据流信息。
具体地,可对opcode代码段内容进行反汇编解析,得到反汇编解析后的解析结果,并提取解析结果中的数据流信息,得到opcode代码段内容中的数据流信息,其中,数据流信息可理解为程序执行过程中所涉及到的相关数据的特征与变化。
S103,根据数据流信息生成对应的特征码,并检测特征码是否存在于预设的恶意代码特征库中。
具体而言,在本发明的实施例中,从数据流信息中选取部分或全部片段进行重新组合,并根据预设算法对重新组合后的部分或全部片段进行计算以生成数据流信息对应的特征码。其中,在本发明的实施例中,预设算法可包括但不限于相似性哈希算法(即相似性hash算法)、或哈希(hash)算法等。
更具体地,针对每个函数,从该函数的opcode代码段内容中的数据流信息中选取部分或全部片段进行重新组合,并利用预先指定的算法(如相似性hash算法)对组合后的内容进行特征码计算,以得到对应的特征码,从而可得到所有函数的opcode代码段内容对应的特征码。之后,可将特征码与预设的恶意代码特征库中的特征码进行比对。其中,在本发明的实施例中,预设的恶意代码特征库可理解是预先保存了恶意代码特征,并可定期对该预设的恶意代码特征库进行更新以保证其能够全面覆盖市场上出现的恶意代码所对应的特征码。
S104,如果检测特征码存在于预设的恶意代码特征库中,则判断移动终端中具有恶意代码。
具体地,当检测特征码与预设的恶意代码特征库中的特征码比对一致时,可判断移动终端中具有恶意代码。
其中,在本发明的实施例中,预设的恶意代码特征库中可具有特征码与恶意代码名称的对应关系,进一步的,在本发明的一个实施例中,在检测特征码存在于预设的恶意代码特征库中之后,所述检测方法还可包括:根据特征码查找预设的恶意代码特征码库以获取与特征码对应的恶意代码名称。在本发明的实施例中,还可将获取到的恶意代码名称提供给用户,以使用户能够了解到移动终端已感染哪个恶意代码。
为了使得本领域的技术人员能够更加清楚地了解本发明,下面将结合图3对本发明作进一步详细说明:
步骤1,读取可执行文件Dex,获取DexFile结构体,如图3所示,图3中框1即为Dex文件中DexFile结构体的示例图。
步骤2,可根据如图3框1中DexFile结构体的pClassDefs指针,找到类结构体数组,该数组中的每个元素都是DexClassDef结构体,如图3所示,图3中框2即为DexClassDef结构体的示例图。
步骤3,从类结构体数组中,取出一个元素,即取出一个DexClassDef结构体。如果类结构体数组中的元素已全部取出,则跳转步骤12。
步骤4,根据取出的DexClassDef结构体中的classDataOff,找到类数据结构体DexClassData。例如,根据如图3框2中的DexClassDef结构体的classDataOff,找到类数据结构体DexClassData,如图3所示,图3中框3即为DexClassData结构体的示例图。
步骤5,取出如图3框3中的DexClassData结构体中的directMethods和/或virtualMethods,找到对应的类函数结构体数组,该数组中的每个元素都是DexMethod结构体,如图3所示,图3中框4即为DexMethod结构体的示例图;如果directMethods和virtualMethods都已提取过,则跳转步骤3。
步骤6,从类函数结构体数组中,取出一个DexMethod结构体,如果类函数结构体数组中的元素已全部取出,则跳转步骤5,即继续从DexClassData结构体中取出下一个directMethods和/或virtualMethods,找到对应的类函数结构体数组。其中,一个DexMethod结构体对应一个函数,DexMethod结构体中的codeoff指向一个DexCode结构体,如图3所示,图3中框5即为DexCode结构体的示例图,DexCode结构体中的insns和insnsSize分别为本函数opcode的偏移和长度,即opcode的代码段内容。
步骤7,对opcode的代码段内容进行反汇编,得到解析结果。
步骤8,提取解析结果中的数据流信息,也就是数据相关信息,选取部分或者全部片段做组合,例如:将解析结果中,一个函数中的某一数组的内容进行组合。
步骤9,将步骤8中的组合利用指定算法(例如:相似性hash算法等)计算特征码。
步骤10,将计算得到的特征码与预设的恶意代码特征库中的特征码进行比对,若一致,则输出对应的病毒名称,否则,进入步骤11。
步骤11,返回步骤6。
步骤12,结束。
根据本发明实施例的移动终端中恶意代码的检测方法,可先获取移动终端中的可执行文件,并获取可执行文件中的函数以及函数的opcode代码段内容,之后可对函数的opcode代码段内容进行反汇编解析以获取opcode代码段内容中的数据流信息,并根据数据流信息生成对应的特征码,以及检测特征码是否存在于预设的恶意代码特征库中,如果是,则判断移动终端中具有恶意代码,由于数据流表示程序执行过程中所涉及到的相关数据的特征与变化,所以在整个检测过程中,通过从程序数据流的角度对恶意代码进行检测,能够取得更好地检测效果,提高检测结果的准确度。
与上述几种实施例提供的移动终端中恶意代码的检测方法相对应,本发明的一种实施例还提供一种移动终端中恶意代码的检测装置,由于本发明实施例提供的移动终端中恶意代码的检测装置与上述几种实施例提供的移动终端中恶意代码的检测方法相对应,因此在前述移动终端中恶意代码的检测方法的实施方式也适用于本实施例提供的移动终端中恶意代码的检测装置,在本实施例中不再详细描述。图4是根据本发明一个实施例的移动终端中恶意代码的检测装置的结构示意图。如图4所示,该移动终端中恶意代码的检测装置可以包括:第一获取模块10、第二获取模块20、生成模块30、检测模块40和判断模块50。
具体地,第一获取模块10可用于获取移动终端中的可执行文件,并获取可执行文件中的函数以及函数的opcode代码段内容。其中,在本发明的实施例中,移动终端的操作系统可为Android操作系统。需要说明的是,移动终端可以是手机、平板电脑等具有Android操作系统的硬件设备。此外,可执行文件的格式类型可为DEX。
具体而言,在本发明的实施例中,第一获取模块10可具体用于:对可执行文件进行解析以获取可执行文件中的结构体,并扫描结构体以获取可执行文件中的函数以及函数的opcode代码段内容。
更具体地,在本发明的实施例中,第一获取模块10可具体用于:读取可执行文件以获取可执行文件中的DexFile结构体,并根据所示DexFile结构体中的指针pClassDefs获取可执行文件的类结构体数组,其中,类结构体数组由至少一个DexClassDef结构体组成;遍历类结构体数组,根据每个述DexClassDef结构体中的classDataOff获取类数据结构体DexClassData;取出类数据结构体DexClassData中的directMethods和/或virtualMethods,并根据directMethods和/或virtualMethods获取对应的类函数结构体数组,其中,类函数结构体数组由至少一个DexMethod结构体组成,每个DexMethod结构体对应一个函数;以及遍历类函数结构体数组,根据每个DexMethod结构体中的codeoff获取DexCode结构体,并根据DexCode结构体中的insns和insnsSize获取DexCode结构体对应的函数的opcode代码段内容。
由此,通过获取并遍历可执行文件中的所有结构体以得到该可执行文件中的所有函数以及该函数的opcode代码段内容。
第二获取模块20可用于对函数的opcode代码段内容进行反汇编解析以获取opcode代码段内容中的数据流信息。
生成模块30可用于根据所示数据流信息生成对应的特征码。具体而言,在本发明的实施例中,生成模块30可具体用于:从数据流信息中选取部分或全部片段进行重新组合,并根据预设算法对重新组合后的部分或全部片段进行计算以生成数据流信息对应的特征码。其中,在本发明的实施例中,预设算法可包括但不限于相似性哈希算法(即相似性hash算法)、或哈希(hash)算法等。
检测模块40可用于检测特征码是否存在于预设的恶意代码特征库中。其中,在本发明的实施例中,预设的恶意代码特征库可理解是预先保存了恶意代码特征,并可定期对该预设的恶意代码特征库进行更新以保证其能够全面覆盖市场上出现的恶意代码所对应的特征码。
判断模块50可用于在检测特征码存在于预设的恶意代码特征库中时,判断移动终端中具有恶意代码。
其中,在本发明的一个实施例中,预设的恶意代码特征库中可具有特征码与恶意代码名称的对应关系,进一步的,在本发明的实施例中,如图5所示,所述检测装置还可包括:第三获取模块60,第三获取模块60可用于在检测模块40检测特征码存在于预设的恶意代码特征码中之后,根据特征码查找预设的恶意代码特征库以获取与特征码对应的恶意代码名称。在本发明的实施例中,还可将获取到的恶意代码名称提供给用户,以使用户能够了解到移动终端已感染哪个恶意代码。
根据本发明实施例的移动终端中恶意代码的检测装置,可通过第一获取模块获取移动终端中的可执行文件,并获取可执行文件中的函数以及函数的opcode代码段内容,第二获取模块对函数的opcode代码段内容进行反汇编解析以获取opcode代码段内容中的数据流信息,生成模块根据数据流信息生成对应的特征码,检测模块检测特征码是否存在于预设的恶意代码特征库中,如果是,则判断模块判断移动终端中具有恶意代码,由于数据流表示程序执行过程中所涉及到的相关数据的特征与变化,所以在整个检测过程中,通过从程序数据流的角度对恶意代码进行检测,能够取得更好地检测效果,提高检测结果的准确度。
在本发明的描述中,需要理解的是,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本发明的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本发明的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本发明的实施例所属技术领域的技术人员所理解。
在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,"计算机可读介质"可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM),只读存储器(ROM),可擦除可编辑只读存储器(EPROM或闪速存储器),光纤装置,以及便携式光盘只读存储器(CDROM)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。
应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
此外,在本发明各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。
上述提到的存储介质可以是只读存储器,磁盘或光盘等。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。
Claims (10)
1.一种移动终端中恶意代码的检测方法,其特征在于,包括以下步骤:
获取移动终端中的可执行文件,并获取所述可执行文件中的函数以及所述函数的opcode代码段内容;
对所述函数的opcode代码段内容进行反汇编解析以获取所述opcode代码段内容中的数据流信息,其中,所述数据流信息为程序执行过程中所涉及到的相关数据的特征与变化;
根据所述数据流信息生成对应的特征码,并检测所述特征码是否存在于预设的恶意代码特征库中;以及
如果检测所述特征码存在于所述预设的恶意代码特征库中,则判断所述移动终端中具有恶意代码;
其中,所述根据所述数据流信息生成对应的特征码,包括:
从所述数据流信息中选取部分或全部片段进行重新组合,并根据预设算法对重新组合后的部分或全部片段进行计算以生成所述数据流信息对应的特征码。
2.如权利要求1所述的移动终端中恶意代码的检测方法,其特征在于,其中,所述预设的恶意代码特征库中具有特征码与恶意代码名称的对应关系,在检测所述特征码存在于所述预设的恶意代码特征库中之后,所述方法还包括:
根据所述特征码查找所述预设的恶意代码特征码库以获取与所述特征码对应的恶意代码名称。
3.如权利要求1所述的移动终端中恶意代码的检测方法,其特征在于,所述获取所述可执行文件中的函数以及所述函数的opcode代码段内容,包括:
对所述可执行文件进行解析以获取所述可执行文件中的结构体,并扫描所述结构体以获取所述可执行文件中的函数以及所述函数的opcode代码段内容。
4.如权利要求3所述的移动终端中恶意代码的检测方法,其特征在于,其中,所述移动终端的操作系统为Android操作系统,所述可执行文件的格式类型为DEX。
5.如权利要求4所述的移动终端中恶意代码的检测方法,其特征在于,所述对所述可执行文件进行解析以获取所述可执行文件中的结构体,并扫描所述结构体以获取所述可执行文件中的函数以及所述函数的opcode代码段内容,包括:
读取所述可执行文件以获取所述可执行文件中的DexFile结构体,并根据所述DexFile结构体中的指针pClassDefs获取所述可执行文件的类结构体数组,其中,所述类结构体数组由至少一个DexClassDef结构体组成;
遍历所述类结构体数组,根据每个所述DexClassDef结构体中的classDataOff获取类数据结构体DexClassData;
取出所述类数据结构体DexClassData中的directMethods和/或virtualMethods,并根据所述directMethods和/或virtualMethods获取对应的类函数结构体数组,其中,所述类函数结构体数组由至少一个DexMethod结构体组成,每个所述DexMethod结构体对应一个函数;
遍历所述类函数结构体数组,根据每个所述DexMethod结构体中的codeoff获取DexCode结构体,并根据所述DexCode结构体中的insns和insnsSize获取所述DexCode结构体对应的函数的opcode代码段内容。
6.一种移动终端中恶意代码的检测装置,其特征在于,包括:
第一获取模块,用于获取移动终端中的可执行文件,并获取所述可执行文件中的函数以及所述函数的opcode代码段内容;
第二获取模块,用于对所述函数的opcode代码段内容进行反汇编解析以获取所述opcode代码段内容中的数据流信息,其中,所述数据流信息为程序执行过程中所涉及到的相关数据的特征与变化;
生成模块,用于根据所示数据流信息生成对应的特征码;
检测模块,用于检测所述特征码是否存在于预设的恶意代码特征库中;
判断模块,用于在检测所述特征码存在于所述预设的恶意代码特征库中时,判断所述移动终端中具有恶意代码;
其中,所述生成模块具体用于:
从所述数据流信息中选取部分或全部片段进行重新组合,并根据预设算法对重新组合后的部分或全部片段进行计算以生成所述数据流信息对应的特征码。
7.如权利要求6所述的移动终端中恶意代码的检测装置,其特征在于,其中,所述预设的恶意代码特征库中具有特征码与恶意代码名称的对应关系,所述装置还包括:
第三获取模块,用于在检测所述特征码存在于所述预设的恶意代码特征码中之后,根据所述特征码查找所述预设的恶意代码特征库以获取与所述特征码对应的恶意代码名称。
8.如权利要求6所述的移动终端中恶意代码的检测装置,其特征在于,所述第一获取模块具体用于:
对所述可执行文件进行解析以获取所述可执行文件中的结构体,并扫描所述结构体以获取所述可执行文件中的函数以及所述函数的opcode代码段内容。
9.如权利要求8所述的移动终端中恶意代码的检测装置,其特征在于,其中,所述移动终端的操作系统为Android操作系统,所述可执行文件的格式类型为DEX。
10.如权利要求9所述的移动终端中恶意代码的检测装置,其特征在于,所述第一获取模块具体用于:
读取所述可执行文件以获取所述可执行文件中的DexFile结构体,并根据所示DexFile结构体中的指针pClassDefs获取所述可执行文件的类结构体数组,其中,所述类结构体数组由至少一个DexClassDef结构体组成;
遍历所述类结构体数组,根据每个所述DexClassDef结构体中的classDataOff获取类数据结构体DexClassData;
取出所述类数据结构体DexClassData中的directMethods和/或virtualMethods,并根据所述directMethods和/或virtualMethods获取对应的类函数结构体数组,其中,所述类函数结构体数组由至少一个DexMethod结构体组成,每个所述DexMethod结构体对应一个函数;
遍历所述类函数结构体数组,根据每个所述DexMethod结构体中的codeoff获取DexCode结构体,并根据所述DexCode结构体中的insns和insnsSize获取所述DexCode结构体对应的函数的opcode代码段内容。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510037893.1A CN104657661B (zh) | 2015-01-26 | 2015-01-26 | 移动终端中恶意代码的检测方法和装置 |
PCT/CN2015/073203 WO2016119279A1 (zh) | 2015-01-26 | 2015-02-16 | 移动终端中恶意代码的检测方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510037893.1A CN104657661B (zh) | 2015-01-26 | 2015-01-26 | 移动终端中恶意代码的检测方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104657661A CN104657661A (zh) | 2015-05-27 |
CN104657661B true CN104657661B (zh) | 2018-05-22 |
Family
ID=53248772
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510037893.1A Active CN104657661B (zh) | 2015-01-26 | 2015-01-26 | 移动终端中恶意代码的检测方法和装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN104657661B (zh) |
WO (1) | WO2016119279A1 (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105488411A (zh) * | 2015-06-03 | 2016-04-13 | 哈尔滨安天科技股份有限公司 | 基于opcode模糊分类的恶意代码检测方法及系统 |
CN108062474B (zh) * | 2016-11-08 | 2022-01-11 | 阿里巴巴集团控股有限公司 | 文件的检测方法及装置 |
CN107103254B (zh) * | 2017-06-06 | 2021-06-29 | 北京奇虎科技有限公司 | 加密程序识别方法及装置、电子设备 |
CN109558731B (zh) * | 2017-09-26 | 2022-04-08 | 腾讯科技(深圳)有限公司 | 特征码处理方法、装置及存储介质 |
CN113126993B (zh) * | 2021-05-17 | 2023-10-31 | 广州市公安局网络警察支队 | 应用于车辆检测软件的自动化测试方法及其系统 |
CN113239357B (zh) * | 2021-07-13 | 2021-09-10 | 中国人民解放军国防科技大学 | 一种Webshell检测方法、存储介质及系统 |
CN116089951B (zh) * | 2023-02-24 | 2023-07-14 | 山东云天安全技术有限公司 | 一种恶意代码检测方法、可读存储介质及电子设备 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102054149A (zh) * | 2009-11-06 | 2011-05-11 | 中国科学院研究生院 | 一种恶意代码行为特征提取方法 |
CN103268445A (zh) * | 2012-12-27 | 2013-08-28 | 武汉安天信息技术有限责任公司 | 一种基于OpCode的android恶意代码检测方法及系统 |
CN103268449A (zh) * | 2012-12-28 | 2013-08-28 | 武汉安天信息技术有限责任公司 | 一种手机恶意代码的高速检测方法和系统 |
CN103761475A (zh) * | 2013-12-30 | 2014-04-30 | 北京奇虎科技有限公司 | 检测智能终端中恶意代码的方法及装置 |
CN103902910A (zh) * | 2013-12-30 | 2014-07-02 | 北京奇虎科技有限公司 | 检测智能终端中恶意代码的方法及装置 |
CN104123489A (zh) * | 2014-07-02 | 2014-10-29 | 珠海市君天电子科技有限公司 | 可执行程序的监控方法和装置 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102663286B (zh) * | 2012-03-21 | 2015-05-06 | 北京奇虎科技有限公司 | 一种病毒apk的识别方法及装置 |
CN103902898A (zh) * | 2012-12-27 | 2014-07-02 | 中国电信股份有限公司 | 病毒辨识方法与装置 |
CN103914654A (zh) * | 2013-12-25 | 2014-07-09 | 武汉安天信息技术有限责任公司 | 一种对Android ART运行时代码进行恶意代码检测的方法及系统 |
-
2015
- 2015-01-26 CN CN201510037893.1A patent/CN104657661B/zh active Active
- 2015-02-16 WO PCT/CN2015/073203 patent/WO2016119279A1/zh active Application Filing
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102054149A (zh) * | 2009-11-06 | 2011-05-11 | 中国科学院研究生院 | 一种恶意代码行为特征提取方法 |
CN103268445A (zh) * | 2012-12-27 | 2013-08-28 | 武汉安天信息技术有限责任公司 | 一种基于OpCode的android恶意代码检测方法及系统 |
CN103268449A (zh) * | 2012-12-28 | 2013-08-28 | 武汉安天信息技术有限责任公司 | 一种手机恶意代码的高速检测方法和系统 |
CN103761475A (zh) * | 2013-12-30 | 2014-04-30 | 北京奇虎科技有限公司 | 检测智能终端中恶意代码的方法及装置 |
CN103902910A (zh) * | 2013-12-30 | 2014-07-02 | 北京奇虎科技有限公司 | 检测智能终端中恶意代码的方法及装置 |
CN104123489A (zh) * | 2014-07-02 | 2014-10-29 | 珠海市君天电子科技有限公司 | 可执行程序的监控方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
WO2016119279A1 (zh) | 2016-08-04 |
CN104657661A (zh) | 2015-05-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104657661B (zh) | 移动终端中恶意代码的检测方法和装置 | |
CN106295337B (zh) | 用于检测恶意漏洞文件的方法、装置及终端 | |
CN104504333B (zh) | Elf文件中的恶意代码检测方法及装置 | |
US8799869B2 (en) | System for ensuring comprehensiveness of requirements testing of software applications | |
CN106326107B (zh) | 基于仿真环境的非侵入式嵌入式软件异常处理验证方法 | |
US10423474B2 (en) | Performing diagnostic tracing of an executing application to identify suspicious pointer values | |
CN106528430B (zh) | 一种应用程序的检测方法、装置及电子设备 | |
CN104050417B (zh) | 一种在移动终端对软件状态进行检测的方法及装置 | |
CN104573524A (zh) | 一种基于静态检测的模糊测试方法 | |
CN101159732A (zh) | 基于数据流分析的恶意攻击检测方法 | |
CN108734165A (zh) | 基于人工智能的书法质量检测方法、装置和电子设备 | |
CN108846284A (zh) | 一种基于字节码图像和深度学习的Android恶意应用检测方法 | |
KR20120031834A (ko) | 인스트루먼테이션 장치 및 방법 | |
CN105653906B (zh) | 基于地址随机的反内核挂钩方法 | |
CN106339247A (zh) | 一种动态链接库文件的加载系统及加载方法 | |
Dunkl et al. | A method for analyzing time series data in process mining: application and extension of decision point analysis | |
CN110276039A (zh) | 页面元素的路径生成方法、装置和电子设备 | |
CN108475314A (zh) | 使用递增简档分析的信息流跟踪 | |
CN105786308A (zh) | 字符串的显示方法和装置 | |
CN111159167B (zh) | 标注质量检测装置和方法 | |
CN113778890B (zh) | 代码测试方法、装置、电子设备及存储介质 | |
CN103679355B (zh) | 控制业务流程的方法和装置 | |
WO2008111019A3 (en) | Apparatus, computer program product, and methods for flexible data unit segmentation and arrangement | |
van Geest et al. | A side-channel based disassembler for the ARM-Cortex M0 | |
CN115664864B (zh) | 一种信息安全提示方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |