CN109508546A - 一种基于软件基因的软件同源性分析方法和装置 - Google Patents

一种基于软件基因的软件同源性分析方法和装置 Download PDF

Info

Publication number
CN109508546A
CN109508546A CN201811342306.XA CN201811342306A CN109508546A CN 109508546 A CN109508546 A CN 109508546A CN 201811342306 A CN201811342306 A CN 201811342306A CN 109508546 A CN109508546 A CN 109508546A
Authority
CN
China
Prior art keywords
software
gene
genome
predetermined
code
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.)
Pending
Application number
CN201811342306.XA
Other languages
English (en)
Inventor
吴栋
范渊
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
DBAPPSecurity Co Ltd
Hangzhou Dbappsecurity Technology Co Ltd
Original Assignee
Hangzhou Dbappsecurity Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Hangzhou Dbappsecurity Technology Co Ltd filed Critical Hangzhou Dbappsecurity Technology Co Ltd
Priority to CN201811342306.XA priority Critical patent/CN109508546A/zh
Publication of CN109508546A publication Critical patent/CN109508546A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/562Static detection
    • G06F21/563Static detection by source code analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/74Reverse engineering; Extracting design information from source code

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (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)
  • Measuring Or Testing Involving Enzymes Or Micro-Organisms (AREA)

Abstract

本发明提供了一种基于软件基因的软件同源性分析方法和装置,涉及网络安全的技术领域,包括:获取待分析软件;对待分析软件的代码执行片段化操作,得到待分析软件的软件基因组;对软件基因组中的每个软件基因执行归一化操作,得到目标软件基因组;基于软件基因库确定目标软件基因组中的每个软件基因所属的预设软件,并确定待分析软件所属的软件家族,其中,软件基因库中包含各个预设软件的软件基因和每个软件基因的标识信息,标识信息用于表征软件基因所属的预设软件,以及用于表征软件基因所属的预设软件所属的软件家族,解决了现有的软件同源性分析方法在确定待分析软件所属的软件家族时的准确性较低技术问题。

Description

一种基于软件基因的软件同源性分析方法和装置
技术领域
本发明涉及网络安全技术领域,尤其是涉及一种基于软件基因的软件同源性分析方法和装置。
背景技术
随着互联网科技的发展,黑客为了获取利益,通常会编写恶意软件,或在正常软件中植入病毒,对他人的设备进行攻击和资料窃取,特别是在对他人设备进行高级可持续性威胁攻击时,黑客通常会利用到特殊的木马病毒对设备进行攻击。
同时,为了针对恶意软件的攻击,需要对恶意软件的来源进行判断,通过判定出恶意软件所属的家族或组织,进而制定针对性的防护计划。
但是,现有的方法很难从恶意软件的代码层面判断出恶意软件的来源,且判断的准确率较低。
针对上述问题,还未提出有效的解决方案。
发明内容
有鉴于此,本发明的目的在于提供一种基于软件基因的软件同源性分析方法和装置,以缓解了现有的软件同源性分析方法在确定待分析软件所属的软件家族时的准确性较低技术问题。
第一方面,本发明实施例提供了一种基于软件基因的软件同源性分析方法,该方法包括:获取待分析软件;对所述待分析软件的代码执行片段化操作,得到所述待分析软件的软件基因组;对所述软件基因组中的每个软件基因执行归一化操作,得到目标软件基因组;基于软件基因库确定所述目标软件基因组中的每个软件基因所属的预设软件,并确定所述待分析软件所属的软件家族,其中,所述软件基因库中包含各个预设软件的软件基因和每个软件基因的标识信息,所述标识信息用于表征所述软件基因所属的预设软件,以及用于表征所述软件基因所属的预设软件所属的软件家族。
进一步地,对所述待分析软件的代码执行片段化操作,得到所述待分析软件的软件基因组包括:基于反汇编技术,将所述待分析软件的代码转换为汇编代码;基于单条汇编指令,对所述汇编代码进行拆分,得到多个字节码;基于所述待分析软件中代码的跳转关系,对多个所述字节码进行拼接,得到所述软件基因组。
进一步地,对所述软件基因组中的每个软件基因执行归一化操作,得到目标软件基因组包括:基于所述汇编代码的汇编指令结构,将所述软件基因组中每个软件基因的第一目标字节码替换为第二目标字节码,得到所述目标软件基因组,其中,所述第一目标字节码包括:立即数字节码,所述第二目标字节码为00。
进一步地,所述方法还包括,通过以下方式构建所述软件基因库:获取多个预设软件;对每个所述预设软件的代码执行片段化操作,得到每个所述预设软件的软件基因组;对每个所述预设软件的软件基因组中软件基因执行归一化操作,得到每个所述预设软件的目标软件基因组;为每个所述预设软件的目标软件基因组中的软件基因添加标识信息,其中,所述标识信息用于表征所述软件基因所属的预设软件,以及用于表征所述软件基因所属的预设软件所属软件家族;将添加标识信息的软件基因存储至数据库中,得到所述软件基因库。
进一步地,对每个所述预设软件的代码执行片段化操作,得到每个所述预设软件的软件基因组包括:基于反汇编技术,将每个所述预设软件的代码转换为汇编代码;基于单条汇编指令,对每个所述预设软件的汇编代码进行拆分,得到每个所述预设软件的多个字节码;基于每个所述预设软件的代码的跳转关系,对每个所述预设软件的多个字节码进行拼接,得到每个所述预设软件的软件基因组。
进一步地,对每个所述预设软件的软件基因组中软件基因执行归一化操作,得到每个所述预设软件的目标软件基因组包括:基于每个所述预设软件的汇编指令结构,将每个所述预设软件的软件基因组中每个软件基因的第一目标字节码替换为所述第二目标字节码,得到每个所述预设软件的目标软件基因组。
第二方面,本发明实施例提供了一种基于软件基因的软件同源性分析装置,该装置包括:获取单元,片段化单元,归一化单元和确定单元,其中,所述获取单元用于获取待分析软件;所述片段化单元用于对所述待分析软件的代码执行片段化操作,得到所述待分析软件的软件基因组;所述归一化单元用于对所述软件基因组中的每个软件基因执行归一化操作,得到目标软件基因组;所述确定单元用于基于软件基因库确定所述目标软件基因组中的每个软件基因所属的预设软件,并确定所述待分析软件所属的软件家族,其中,所述软件基因库中包含各个预设软件的软件基因和每个软件基因的标识信息,所述标识信息用于表征所述软件基因所属的预设软件,以及用于表征所述软件基因所属的预设软件所属的软件家族。
进一步地,所述片段化单元还用于:基于反汇编技术,将所述待分析软件的代码转换为汇编代码;基于单条汇编指令,对所述汇编代码进行拆分,得到多个字节码;基于所述待分析软件中代码的跳转关系,对多个所述字节码进行拼接,得到所述软件基因组。
进一步地,所述归一化单元用于:基于所述汇编代码的汇编指令结构,将所述软件基因组中每个软件基因的第一目标字节码替换为第二目标字节码,得到所述目标软件基因组,其中,所述第一目标字节码包括:立即数字节码,所述第二目标字节码为00。
进一步地,所述装置还包括:构建单元,用于通过以下方式构建所述软件基因库:获取多个预设软件;对每个所述预设软件的代码执行片段化操作,得到每个所述预设软件的软件基因组;对每个所述预设软件的软件基因组中软件基因执行归一化操作,得到每个所述预设软件的目标软件基因组;为每个所述预设软件的目标软件基因组中的软件基因添加标识信息,其中,所述标识信息用于表征所述软件基因所属的预设软件,以及用于表征所述软件基因所属的预设软件所属软件家族;将添加标识信息的软件基因存储至数据库中,得到所述软件基因库。
在本发明实施例中,在获取到待分析软件后,对待分析软件的代码执行片段化操作,得到待分析软件的软件基因组,然后,对软件基因组中的每个软件基因执行归一化操作,得到目标软件基因组,最后,基于软件基因库确定所述目标软件基因组中的每个软件基因所属的预设软件,并确定待分析软件所属的软件家族,从而达到了从软件的代码层面对软件的同源性进行分析,进而确定软件所属的软件家族的目的,进而解决了现有的软件同源性分析方法在确定待分析软件所属的软件家族时的准确性较低技术问题,从而实现了提高了确定软件所属家族时的准确性的技术效果。
本发明的其他特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。
为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种基于软件基因的软件同源性分析方法的流程图;
图2为本发明实施例提供的另一种基于软件基因的软件同源性分析方法的流程图;
图3为本发明实施例提供的一种构建软件基因库方法的流程图;
图4为本发明实施例提供的一种基于软件基因的软件同源性分析装置的示意图;
图5为为本发明实施例提供的一种服务器的示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例一:
根据本发明实施例,提供了一种基于软件基因的软件同源性分析方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
图1是根据本发明实施例的一种基于软件基因的软件同源性分析方法,如图1所示,该方法包括如下步骤:
步骤S102,获取待分析软件;
步骤S104,对所述待分析软件的代码执行片段化操作,得到所述待分析软件的软件基因组;
步骤S106,对所述软件基因组中的每个软件基因执行归一化操作,得到目标软件基因组;
步骤S108,基于软件基因库确定所述目标软件基因组中的每个软件基因所属的预设软件,并确定所述待分析软件所属的软件家族,其中,所述软件基因库中包含各个预设软件的软件基因和每个软件基因的标识信息,所述标识信息用于表征所述软件基因所属的预设软件,以及用于表征所述软件基因所属的预设软件所属的软件家族。
在本发明实施例中,在获取到待分析软件后,对待分析软件的代码执行片段化操作,得到待分析软件的软件基因组,然后,对软件基因组中的每个软件基因执行归一化操作,得到目标软件基因组,最后,基于软件基因库确定所述目标软件基因组中的每个软件基因所属的预设软件,并确定待分析软件所属的软件家族,从而达到了从软件的代码层面对软件的同源性进行分析,进而确定软件所属的软件家族的目的,进而解决了现有的软件同源性分析方法在确定待分析软件所属的软件家族时的准确性较低技术问题,从而实现了提高了确定软件所属家族时的准确性的技术效果。
杀毒软件能够对恶意软件命名,但是很多恶意软件的名称都非常模糊,如像Backdoor:Win32/Xtrat.A这种命名就非常清楚,从名称中可以看出该恶意软件是Xtrat家族的恶意软件,但是如Generic.Malware.SL!.BC4306AD这种命名方式就十分模糊,看不出该软件所属的软件家族。
且同一家族的恶意软件稍微修改一下代码,可能就会失去杀毒软件检测的特征,不能明确的确定出修改后的恶意软件属于哪类的恶意软件,进而无法确定出修改后的恶意软件所属的软件家族。
同时,由于各个杀毒软件厂商的对恶意软件命名方式也是不同的,导致无法根据待分析软件的名称分析出待分析软甲所属的软件家族。
因此,就需要通过软件基因层面,通过软件基因与软件基因库中基因中的共性基因的来判断软件所属的软件家族,通过软件基因层面存在的共性代码来判断是否和某组织相关,即同源性问题,恶意软件是否出自同一组织,能够有效的提高判断的准确率。
需要说明的是,执行步骤S108时,可以将待分析软件的目标基因组中每个软件基因与软件基因库中软件基因进行对比,确定出待分析软件的每个软件基因所属的预设软件,进而根据每个待分析软件的软件基因所属的预设软件,确定出待分析软件所属的软件家族。
例如,目标软件基因组中包含10个软件基因,当待分析软件的10个软件基因与在经过与软件基因库的对比后,确定出待分析软件的6个软件基因属于预设软件A,则我们可以确定出待分析软件所属的软件家族就是预设软件A所属的软件家族。
在本发明实施例中,如图2所示,步骤S104还包括如下步骤:
步骤S11,基于反汇编技术,将所述待分析软件的代码转换为汇编代码;
步骤S12,基于单条汇编指令,对所述汇编代码进行拆分,得到多个字节码;
步骤S13,基于所述待分析软件中代码的跳转关系,对多个所述字节码进行拼接,得到所述软件基因组。
在本发明实施例中,通过反汇编技术将待分析软件的代码转换为汇编代码,通过单条汇编指令对汇编代码进行拆分,得到多个字节码,然后根据待分析软件的代码的跳转关系(如jmp跳转指令),对多个所述字节码进行拼接,得到所述软件基因组。
通过执行上述步骤S11至步骤S13,将待分析软件转换为由待分析软件代码组成的软件基因,进而可以从待分析软件的代码层面对待分析软件的同源性进行分析。
需要说明的是,通过上述步骤,获取到软件基因组中的软件基因是未经过优化的软件基因。
在本发明实施例中,如图2所示,步骤S106还包括如下步骤:
步骤S21,基于所述汇编代码的汇编指令结构,将所述软件基因组中每个软件基因的第一目标字节码替换为第二目标字节码,得到所述目标软件基因组,其中,所述第一目标字节码包括:立即数字节码,所述第二目标字节码为00。
在本发明实施例中,基于汇编代码的汇编指令结构,将软件基因组中每个软件基因的立即数字节码等冗余字节码替换为00,保持软件基因的序列长度,从而得到待分析软件的目标基因组。
上述步骤S21,通过将每个软件基因的立即数字节码等冗余字节码替换为00,不仅保证了每个软件基因的特性,同时也提高了软件基因与软件基因库进行对比时的效率。
在本发明实施例中,如图3所示,所述方法还包括,通过以下方式构建所述软件基因库:
步骤S31,获取多个预设软件;
步骤S32,对每个所述预设软件的代码执行片段化操作,得到每个所述预设软件的软件基因组;
步骤S33,对每个所述预设软件的软件基因组中软件基因执行归一化操作,得到每个所述预设软件的目标软件基因组;
步骤S34,为每个所述预设软件的目标软件基因组中的软件基因添加标识信息,其中,所述标识信息用于表征所述软件基因所属的预设软件,以及用于表征所述软件基因所属的预设软件所属软件家族;
步骤S35,将添加标识信息的软件基因存储至数据库中,得到所述软件基因库。
在本发明实施例中,通过执行上述步骤S31至步骤S35,从而构建出软件基因库。
首先,获取多个预设软件。
需要说明的是,在获取预设软件时,需要搜集各家族各组织及各应用软件的入库样例软件,以使由预设软件构成的软件基因库具有代表性,多样性,覆盖面广等特性,从而保证在执行上述步骤S102至S108时,能够确定出各种待分析软件所属的家族。
接着,对每个预设软件的代码执行片段化操作,得到每个预设软件的软件基因组。
然后,对每个预设软件的软件基因组中软件基因执行归一化操作,得到每个预设软件的目标软件基因组,并为每个预设软件的目标软件基因组中的软件基因添加标识信息。
最后,将添加标识信息的软件基因存储至数据库中,得到软件基因库。
在本发明实施例中,步骤S32还包括如下步骤:
步骤S41,基于反汇编技术,将每个所述预设软件的代码转换为汇编代码;
步骤S42,基于单条汇编指令,对每个所述预设软件的汇编代码进行拆分,得到每个所述预设软件的多个字节码;
步骤S43,基于每个所述预设软件的代码的跳转关系,对每个所述预设软件的多个字节码进行拼接,得到每个所述预设软件的软件基因组。
在本发明实施例中,通过反汇编技术将各个预设软件的代码转换为汇编代码,通过单条汇编指令对每个预设软件的汇编代码进行拆分,得到每个预设软件的多个字节码,然后根据预设软件的代码的跳转关系(如jmp跳转指令),对每个预设软件的多个所述字节码进行拼接,得到每个预设软件的软件基因组。
在本发明实施例中,步骤S33还包括如下步骤:
步骤S51,基于每个所述预设软件的汇编指令结构,将每个所述预设软件的软件基因组中每个软件基因的第一目标字节码替换为所述第二目标字节码,得到每个所述预设软件的目标软件基因组。
在本发明实施例中,基于每个预设软件汇编代码的汇编指令结构,将每个预设软件的软件基因组中的每个软件基因的立即数字节码等冗余字节码替换为00,保持软件基因的序列长度,从而得到每个预设软件的目标基因组。
上述步骤S51,通过将每个预设软件的软件基因中的立即数字节码等冗余字节码替换为00,不仅保证了每个预设软件的软件基因的特性,同时也提高了软件基因与软件基因库进行对比时的效率。
实施例二:
本发明还提供了一种基于软件基因的软件同源性分析装置,该系统用于执行本发明实施例上述内容所提供的基于软件基因的软件同源性分析方法,以下是本发明实施例提供的基于软件基因的软件同源性分析装置的具体介绍
如图4所示,该装置包括:获取单元,片段化单元,归一化单元和确定单元,其中,
所述获取单元10用于获取待分析软件;
所述片段化单元20用于对所述待分析软件的代码执行片段化操作,得到所述待分析软件的软件基因组;
所述归一化单元30用于对所述软件基因组中的每个软件基因执行归一化操作,得到目标软件基因组;
所述确定单元40用于基于软件基因库确定所述目标软件基因组中的每个软件基因所属的预设软件,并确定所述待分析软件所属的软件家族,其中,所述软件基因库中包含各个预设软件的软件基因和每个软件基因的标识信息,所述标识信息用于表征所述软件基因所属的预设软件,以及用于表征所述软件基因所属的预设软件所属的软件家族。
在本发明实施例中,在获取到待分析软件后,对待分析软件的代码执行片段化操作,得到待分析软件的软件基因组,然后,对软件基因组中的每个软件基因执行归一化操作,得到目标软件基因组,最后,基于软件基因库确定所述目标软件基因组中的每个软件基因所属的预设软件,并确定待分析软件所属的软件家族,从而达到了从软件的代码层面对软件的同源性进行分析,进而确定软件所属的软件家族的目的,进而解决了现有的软件同源性分析方法在确定待分析软件所属的软件家族时的准确性较低技术问题,从而实现了提高了确定软件所属家族时的准确性的技术效果。
可选地,所述片段化单元还用于基于反汇编技术,将所述待分析软件的代码转换为汇编代码;基于单条汇编指令,对所述汇编代码进行拆分,得到多个字节码;基于所述待分析软件中代码的跳转关系,对多个所述字节码进行拼接,得到所述软件基因组。
可选地,所述归一化单元还用于:基于所述汇编代码的汇编指令结构,将所述软件基因组中每个软件基因的第一目标字节码替换为第二目标字节码,得到所述目标软件基因组,其中,所述第一目标字节码包括:立即数字节码,所述第二目标字节码为00。
可选地,所述装置还包括:构建单元,用于通过以下方式构建所述软件基因库:获取多个预设软件;对每个所述预设软件的代码执行片段化操作,得到每个所述预设软件的软件基因组;对每个所述预设软件的软件基因组中软件基因执行归一化操作,得到每个所述预设软件的目标软件基因组;为每个所述预设软件的目标软件基因组中的软件基因添加标识信息,其中,所述标识信息用于表征所述软件基因所属的预设软件,以及用于表征所述软件基因所属的预设软件所属软件家族;将添加标识信息的软件基因存储至数据库中,得到所述软件基因库。
可选地,所述构建单元还用于:基于反汇编技术,将每个所述预设软件的代码转换为汇编代码;基于单条汇编指令,对每个所述预设软件的汇编代码进行拆分,得到每个所述预设软件的多个字节码;基于每个所述预设软件的代码的跳转关系,对每个所述预设软件的多个字节码进行拼接,到每个所述预设软件的软件基因组。
可选地,所述构建单元还用于:基于每个所述预设软件的汇编指令结构,将每个所述预设软件的软件基因组中每个软件基因的第一目标字节码替换为所述第二目标字节码,得到每个所述预设软件的目标软件基因组。
参见图5,本发明实施例还提供一种服务器100,包括:处理器50,存储器51,总线52和通信接口53,所述处理器50、通信接口53和存储器51通过总线52连接;处理器50用于执行存储器51中存储的可执行模块,例如计算机程序。
其中,存储器51可能包含高速随机存取存储器(RAM,Random Access Memory),也可能还包括非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。通过至少一个通信接口53(可以是有线或者无线)实现该系统网元与至少一个其他网元之间的通信连接,可以使用互联网,广域网,本地网,城域网等。
总线52可以是ISA总线、PCI总线或EISA总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图5中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
其中,存储器51用于存储程序,所述处理器50在接收到执行指令后,执行所述程序,前述本发明实施例任一实施例揭示的流过程定义的装置所执行的方法可以应用于处理器50中,或者由处理器50实现。
处理器50可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器50中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器50可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(Digital SignalProcessing,简称DSP)、专用集成电路(Application Specific Integrated Circuit,简称ASIC)、现成可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器51,处理器50读取存储器51中的信息,结合其硬件完成上述方法的步骤。
另外,在本发明实施例的描述中,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。
在本发明的描述中,需要说明的是,术语“中心”、“上”、“下”、“左”、“右”、“竖直”、“水平”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上所述实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。

Claims (10)

1.一种基于软件基因的软件同源性分析方法,其特征在于,包括:
获取待分析软件;
对所述待分析软件的代码执行片段化操作,得到所述待分析软件的软件基因组;
对所述软件基因组中的每个软件基因执行归一化操作,得到目标软件基因组;
基于软件基因库确定所述目标软件基因组中的每个软件基因所属的预设软件,并确定所述待分析软件所属的软件家族,其中,所述软件基因库中包含各个预设软件的软件基因和每个软件基因的标识信息,所述标识信息用于表征所述软件基因所属的预设软件,以及用于表征所述软件基因所属的预设软件所属的软件家族。
2.根据权利要求1所述的方法,其特征在于,对所述待分析软件的代码执行片段化操作,得到所述待分析软件的软件基因组包括:
基于反汇编技术,将所述待分析软件的代码转换为汇编代码;
基于单条汇编指令,对所述汇编代码进行拆分,得到多个字节码;
基于所述待分析软件中代码的跳转关系,对多个所述字节码进行拼接,得到所述软件基因组。
3.根据权利要求2所述的方法,其特征在于,对所述软件基因组中的每个软件基因执行归一化操作,得到目标软件基因组包括:
基于所述汇编代码的汇编指令结构,将所述软件基因组中每个软件基因的第一目标字节码替换为第二目标字节码,得到所述目标软件基因组,其中,所述第一目标字节码包括:立即数字节码,所述第二目标字节码为00。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括,通过以下方式构建所述软件基因库:
获取多个预设软件;
对每个所述预设软件的代码执行片段化操作,得到每个所述预设软件的软件基因组;
对每个所述预设软件的软件基因组中软件基因执行归一化操作,得到每个所述预设软件的目标软件基因组;
为每个所述预设软件的目标软件基因组中的软件基因添加标识信息,其中,所述标识信息用于表征所述软件基因所属的预设软件,以及用于表征所述软件基因所属的预设软件所属软件家族;
将添加标识信息的软件基因存储至数据库中,得到所述软件基因库。
5.根据权利要求4所述的方法,其特征在于,对每个所述预设软件的代码执行片段化操作,得到每个所述预设软件的软件基因组包括:
基于反汇编技术,将每个所述预设软件的代码转换为汇编代码;
基于单条汇编指令,对每个所述预设软件的汇编代码进行拆分,得到每个所述预设软件的多个字节码;
基于每个所述预设软件的代码的跳转关系,对每个所述预设软件的多个字节码进行拼接,得到每个所述预设软件的软件基因组。
6.根据权利要求5所述的方法,其特征在于,对每个所述预设软件的软件基因组中软件基因执行归一化操作,得到每个所述预设软件的目标软件基因组包括:
基于每个所述预设软件的汇编指令结构,将每个所述预设软件的软件基因组中每个软件基因的第一目标字节码替换为所述第二目标字节码,得到每个所述预设软件的目标软件基因组。
7.一种基于软件基因的软件同源性分析装置,其特征在于,所述装置包括:获取单元,片段化单元,归一化单元和确定单元,其中,
所述获取单元用于获取待分析软件;
所述片段化单元用于对所述待分析软件的代码执行片段化操作,得到所述待分析软件的软件基因组;
所述归一化单元用于对所述软件基因组中的每个软件基因执行归一化操作,得到目标软件基因组;
所述确定单元用于基于软件基因库确定所述目标软件基因组中的每个软件基因所属的预设软件,并确定所述待分析软件所属的软件家族,其中,所述软件基因库中包含各个预设软件的软件基因和每个软件基因的标识信息,所述标识信息用于表征所述软件基因所属的预设软件,以及用于表征所述软件基因所属的预设软件所属的软件家族。
8.根据权利要求7所述的装置,其特征在于,所述片段化单元还用于:
基于反汇编技术,将所述待分析软件的代码转换为汇编代码;
基于单条汇编指令,对所述汇编代码进行拆分,得到多个字节码;
基于所述待分析软件中代码的跳转关系,对多个所述字节码进行拼接,得到所述软件基因组。
9.根据权利要求8所述的装置,其特征在于,所述归一化单元还用于:
基于所述汇编代码的汇编指令结构,将所述软件基因组中每个软件基因的第一目标字节码替换为第二目标字节码,得到所述目标软件基因组,其中,所述第一目标字节码包括:立即数字节码,所述第二目标字节码为00。
10.根据权利要求7所述的装置,其特征在于,所述装置还包括:
构建单元,用于通过以下方式构建所述软件基因库:
获取多个预设软件;
对每个所述预设软件的代码执行片段化操作,得到每个所述预设软件的软件基因组;
对每个所述预设软件的软件基因组中软件基因执行归一化操作,得到每个所述预设软件的目标软件基因组;
为每个所述预设软件的目标软件基因组中的软件基因添加标识信息,其中,所述标识信息用于表征所述软件基因所属的预设软件,以及用于表征所述软件基因所属的预设软件所属软件家族;
将添加标识信息的软件基因存储至数据库中,得到所述软件基因库。
CN201811342306.XA 2018-11-12 2018-11-12 一种基于软件基因的软件同源性分析方法和装置 Pending CN109508546A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811342306.XA CN109508546A (zh) 2018-11-12 2018-11-12 一种基于软件基因的软件同源性分析方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811342306.XA CN109508546A (zh) 2018-11-12 2018-11-12 一种基于软件基因的软件同源性分析方法和装置

Publications (1)

Publication Number Publication Date
CN109508546A true CN109508546A (zh) 2019-03-22

Family

ID=65748180

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811342306.XA Pending CN109508546A (zh) 2018-11-12 2018-11-12 一种基于软件基因的软件同源性分析方法和装置

Country Status (1)

Country Link
CN (1) CN109508546A (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110414231A (zh) * 2019-06-25 2019-11-05 中国人民解放军战略支援部队信息工程大学 基于马尔科夫模型的内存中软件基因动态提取方法
CN113536308A (zh) * 2021-06-11 2021-10-22 中国人民解放军战略支援部队信息工程大学 软件基因视角下多粒度信息融合的二进制代码溯源方法
CN114064005A (zh) * 2021-11-18 2022-02-18 上海戎磐网络科技有限公司 基于软件基因的编程语言类型识别方法和装置
CN114254316A (zh) * 2021-11-29 2022-03-29 上海戎磐网络科技有限公司 基于软件基因的软件识别方法、装置以及存储介质
CN114254317A (zh) * 2021-11-29 2022-03-29 上海戎磐网络科技有限公司 基于软件基因的软件处理方法、装置以及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104899505A (zh) * 2014-03-07 2015-09-09 北京奇虎科技有限公司 软件检测方法及装置
CN108171059A (zh) * 2017-12-26 2018-06-15 中国人民解放军战略支援部队信息工程大学 基于软件基因的恶意代码检测与识别方法及装置
CN108734215A (zh) * 2018-05-21 2018-11-02 上海戎磐网络科技有限公司 软件分类方法及装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104899505A (zh) * 2014-03-07 2015-09-09 北京奇虎科技有限公司 软件检测方法及装置
CN108171059A (zh) * 2017-12-26 2018-06-15 中国人民解放军战略支援部队信息工程大学 基于软件基因的恶意代码检测与识别方法及装置
CN108734215A (zh) * 2018-05-21 2018-11-02 上海戎磐网络科技有限公司 软件分类方法及装置

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110414231A (zh) * 2019-06-25 2019-11-05 中国人民解放军战略支援部队信息工程大学 基于马尔科夫模型的内存中软件基因动态提取方法
CN113536308A (zh) * 2021-06-11 2021-10-22 中国人民解放军战略支援部队信息工程大学 软件基因视角下多粒度信息融合的二进制代码溯源方法
CN113536308B (zh) * 2021-06-11 2023-01-06 中国人民解放军战略支援部队信息工程大学 软件基因视角下多粒度信息融合的二进制代码溯源方法
CN114064005A (zh) * 2021-11-18 2022-02-18 上海戎磐网络科技有限公司 基于软件基因的编程语言类型识别方法和装置
CN114254316A (zh) * 2021-11-29 2022-03-29 上海戎磐网络科技有限公司 基于软件基因的软件识别方法、装置以及存储介质
CN114254317A (zh) * 2021-11-29 2022-03-29 上海戎磐网络科技有限公司 基于软件基因的软件处理方法、装置以及存储介质

Similar Documents

Publication Publication Date Title
CN109508546A (zh) 一种基于软件基因的软件同源性分析方法和装置
CN103886252B (zh) 受信进程地址空间中执行的软件代码的恶意性的选择评估
US10165001B2 (en) Method and device for processing computer viruses
KR101246623B1 (ko) 악성 애플리케이션 진단 장치 및 방법
JP7131946B2 (ja) アプリケーションの保安性を評価する方法およびシステム
US20090133125A1 (en) Method and apparatus for malware detection
US20150356291A1 (en) System and methods for detecting harmful files of different formats in vitual environment
CN107145782B (zh) 一种异常应用程序的识别方法、移动终端及服务器
US20160196116A1 (en) Method and Apparatus for Detecting Code Change
US20170214704A1 (en) Method and device for feature extraction
EP2472425A2 (en) System and method for detecting unknown malware
CN106326737B (zh) 用于检测可在虚拟堆栈机上执行的有害文件的系统和方法
WO2015165412A1 (en) Method for modifying webpage and apparatus for modifying webpage
JPWO2016027641A1 (ja) 脆弱性発見装置、脆弱性発見方法、及び脆弱性発見プログラム
CN111125688B (zh) 一种进程控制方法、装置及电子设备和存储介质
US20210160259A1 (en) System for automated signature generation and refinement
CN102867038A (zh) 文件类型的确定方法和装置
CN110023938A (zh) 利用函数长度统计确定文件相似度的系统和方法
CN110830234A (zh) 一种用户流量分配方法及装置
US20180137281A1 (en) Software analysis system, software analysis method, and software analysis program
US11868465B2 (en) Binary image stack cookie protection
CN113190279B (zh) 一种预启动功能控制方法、系统及介质
CN106462704B (zh) 动态读入代码分析装置和动态读入代码分析方法
CN111324892A (zh) 生成脚本文件的软件基因和脚本检测的方法、装置及介质
CN103632086B (zh) 修复基本输入输出系统bios恶意程序的方法和装置

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
RJ01 Rejection of invention patent application after publication

Application publication date: 20190322

RJ01 Rejection of invention patent application after publication