CN112100622A - 一种数据处理方法以及设备 - Google Patents
一种数据处理方法以及设备 Download PDFInfo
- Publication number
- CN112100622A CN112100622A CN202010966830.5A CN202010966830A CN112100622A CN 112100622 A CN112100622 A CN 112100622A CN 202010966830 A CN202010966830 A CN 202010966830A CN 112100622 A CN112100622 A CN 112100622A
- Authority
- CN
- China
- Prior art keywords
- code block
- target
- instruction
- code
- program
- 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
Links
Images
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
- 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/033—Test or assess software
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Virology (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本申请实施例公开一种数据处理方法以及设备,其中方法包括如下步骤:获取处于运行状态的目标程序的目标代码块;所述目标程序包括至少一个代码块,所述目标代码块为目标程序中任意一个代码块;获取所述目标代码块对应的重组代码块,所述重组代码块是根据目标代码块中的代码指令,采用二进制插桩插入回调指令生成的代码块;运行所述目标代码块对应的重组代码块,获取所述重组代码块的调度数据,根据所述调度数据确定所述目标程序的恶意行为。采用本申请,可以提高分析恶意软件行为的准确性。
Description
技术领域
本申请涉及互联网技术领域,尤其涉及一种数据处理方法以及设备。
背景技术
随着移动互联网时代的到来,互联网已经渗透到生活的方方面面,网络上的应用程序种类繁多,同时各种恶意软件也随之增多,如何对恶意软件进行监控也是一大难题,目前,主要的方法有沙盒和Process Monitor,沙盒是基于挂钩技术,监控恶意软件的API调用,进而分析其行为,通常会挂钩系统dll,比如ntdll.dll、kernel32.dll,但是该方法必须针对性的对API进行挂钩,未挂钩的API将无法监控。同时由于挂钩技术本身会修改内存,容易被恶意软件检测,并且无法检测到自发起系统调用的API。Process Monitor是基于windows系统提供的内核级回调,监控恶意软件的注册表、文件、网络、进程/线程等行为。但是该方法依赖于操作系统提供的接口,监控的行为非常有限,不足以细致的分析恶意软件行为。
发明内容
本申请实施例提供一种数据处理方法以及设备,可以提高分析恶意软件行为的准确性。
本申请实施例一方面提供了一种数据处理方法,可包括:
获取处于运行状态的目标程序的目标代码块;所述目标程序包括至少一个代码块,所述目标代码块为目标程序中任意一个代码块;
获取所述目标代码块对应的重组代码块,所述重组代码块是根据目标代码块中的代码指令,采用二进制插桩插入回调指令生成的代码块;
运行所述目标代码块对应的重组代码块,获取所述重组代码块的调度数据,根据所述调度数据确定所述目标程序的恶意行为。
其中,所述获取处于运行状态的目标程序的目标代码块,包括:
确定目标程序的目标代码块,根据所述目标代码块在所述目标程序中插入中断程序,当所述目标程序处于运行状态时,响应针对所述目标代码块的中断程序;
根据所述中断程序获取所述目标代码块。
其中,所述获取所述目标代码块对应的重组代码块,包括:
获取所述目标代码块的标签,将所述目标代码块的标签与重组代码块集合中代码块的标签进行匹配,生成匹配结果;所述重组代码块集合用于存储目标程序的代码块对应的重组代码块;
当所述匹配结果为匹配通过时,则从所述重组代码块集合中获取与所述目标代码块具有相同标签的代码块,将与所述目标代码块具有相同标签的代码块确定为所述目标代码块对应的重组代码块;
当所述匹配结果为匹配不通过时,对所述目标代码块中的代码指令进行重写生成重写代码指令,在所述重写代码指令中插入回调指令,根据所述重写代码指令和所述回调指令生成所述目标代码块对应的重组代码块。
其中,所述获取所述目标代码块的标签,将所述目标代码块的标签与重组代码块集合中代码块的标签进行匹配,生成匹配结果,包括:
获取所述目标代码块的标签,将所述目标代码块的标签与重组代码块集合中代码块的标签进行匹配;
当所述重组代码块集合中存在与所述目标代码块具有相同标签的代码块时,则确定匹配结果为匹配通过;
当所述重组代码块集合中不存在与所述目标代码块具有相同标签的代码块时,则确定匹配结果为匹配不通过。
其中,所述当所述匹配结果为匹配不通过时,对所述目标代码块中的代码指令进行重写生成重写代码指令,在所述重写代码指令中插入回调指令,根据所述重写代码指令和所述回调指令生成所述目标代码块对应的重组代码块之后,还包括:
获取所述目标代码块的标签,将所述目标代码块的标签设置为所述重组代码块的标签;所述目标代码块对应的重组代码块与所述目标代码块具有相同的标签;
将所述目标代码块对应的重组代码块存储至重组代码块集合中。
其中,所述对所述目标代码块中的代码指令进行重写生成重写代码指令,在所述重写代码指令中插入回调指令,根据所述重写代码指令和所述回调指令生成所述目标代码块对应的重组代码块,包括:
解析所述目标代码块,生成目标代码块的代码指令,将所述代码指令进行重写生成重写代码指令;
将所述重写代码指令写入目标内存地址中;
在所述重写代码指令中插入回调指令,将所述重写代码指令和所述回调指令进行编译,生成重组代码块。
其中,所述运行所述目标代码块对应的重组代码块,获取所述重组代码块的调度数据,根据所述调度数据确定所述目标程序的恶意行为,包括:
解析所述重组代码块,在所述重组代码块对应的目标内存地址中运行所述重组代码块中的代码指令和回调指令;
获取所述重组代码块的接口调用数据和地址访问数据,将所述接口调用数据和所述地址访问数据与标准数据进行对比生成对比结果,当所述对比结果出现异常,确定所述目标程序的恶意行为;所述标准数据为所述目标程序在没有恶意行为时的接口调用数据和地址访问数据。
本申请实施例一方面提供了一种数据处理设备,可包括:
目标代码块获取单元,用于获取处于运行状态的目标程序的目标代码块;所述目标程序包括至少一个代码块,所述目标代码块为目标程序中任意一个代码块;
重组代码块获取单元,用于获取所述目标代码块对应的重组代码块,所述重组代码块是根据目标代码块中的代码指令,采用二进制插桩插入回调指令生成的代码块;
代码块运行单元,用于运行所述目标代码块对应的重组代码块,获取所述重组代码块的调度数据,根据所述调度数据确定所述目标程序的恶意行为。
其中,所述目标代码块获取单元具体用于:
确定目标程序的目标代码块,根据所述目标代码块在所述目标程序中插入中断程序,当所述目标程序处于运行状态时,响应针对所述目标代码块的中断程序;
根据所述中断程序获取所述目标代码块。
其中,所述重组代码块获取单元包括:
标签匹配子单元,用于获取所述目标代码块的标签,将所述目标代码块的标签与重组代码块集合中代码块的标签进行匹配,生成匹配结果;所述重组代码块集合用于存储目标程序的代码块对应的重组代码块;
代码块获取子单元,用于当所述匹配结果为匹配通过时,则从所述重组代码块集合中获取与所述目标代码块具有相同标签的代码块,将与所述目标代码块具有相同标签的代码块确定为所述目标代码块对应的重组代码块;
代码块生成子单元,用于当所述匹配结果为匹配不通过时,对所述目标代码块中的代码指令进行重写生成重写代码指令,在所述重写代码指令中插入回调指令,根据所述重写代码指令和所述回调指令生成所述目标代码块对应的重组代码块。
其中,所述标签匹配子单元具体用于:
获取所述目标代码块的标签,将所述目标代码块的标签与重组代码块集合中代码块的标签进行匹配;
当所述重组代码块集合中存在与所述目标代码块具有相同标签的代码块时,则确定匹配结果为匹配通过;
当所述重组代码块集合中不存在与所述目标代码块具有相同标签的代码块时,则确定匹配结果为匹配不通过。
其中,还包括:
代码块存储单元,用于获取所述目标代码块的标签,将所述目标代码块的标签设置为所述重组代码块的标签;所述目标代码块对应的重组代码块与所述目标代码块具有相同的标签;
将所述目标代码块对应的重组代码块存储至重组代码块集合中。
其中,所述代码块生成子单元具体用于:
解析所述目标代码块,生成目标代码块的代码指令,将所述代码指令进行重写生成重写代码指令;
将所述重写代码指令写入目标内存地址中;
在所述重写代码指令中插入回调指令,将所述重写代码指令和所述回调指令进行编译,生成重组代码块。
其中,所述代码块运行单元具体用于:
解析所述重组代码块,在所述重组代码块对应的目标内存地址中运行所述重组代码块中的代码指令和回调指令;
获取所述重组代码块的接口调用数据和地址访问数据,将所述接口调用数据和所述地址访问数据与标准数据进行对比生成对比结果,当所述对比结果出现异常,确定所述目标程序的恶意行为;所述标准数据为所述目标程序在没有恶意行为时的接口调用数据和地址访问数据。
本申请实施例一方面提供了一种计算机存储介质,所述计算机存储介质存储有多条指令,所述指令适于由处理器加载并执行上述的方法步骤。
本申请实施例一方面提供了一种计算机设备,包括处理器和存储器;其中,所述存储器存储有计算机程序,所述计算机程序适于由所述处理器加载并执行上述的方法步骤。
本申请实施例一方面提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机存储介质中。计算机设备的处理器从计算机存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述的方法步骤。
在本申请实施例中,通过获取处于运行状态的目标程序的目标代码块,所述目标程序包括至少一个代码块,所述目标代码块为目标程序中任意一个代码块,进一步获取所述目标代码块对应的重组代码块,所述重组代码块是根据目标代码块中的代码指令,采用二进制插桩插入回调指令生成的代码块,最后运行所述目标代码块对应的重组代码块,获取所述重组代码块的调度数据,根据所述调度数据确定所述目标程序的恶意行为。可以通过目标代码块对应的重组代码块的调度数据确定目标程序的恶意行为,不用挂钩API即可监控所有的API调用,同时,也不依赖于操作系统提供的接口,提高了分析恶意软件行为的准确性。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1a是本申请实施例提供的一种数据处理的系统架构图;
图1b是本申请实施例提供的一种数据处理方法的举例示意图;
图2是本申请实施例提供的一种数据处理方法的流程示意图;
图3是本申请实施例提供的一种数据处理方法的流程示意图;
图4是本申请实施例提供的一种数据处理设备的结构示意图;
图5是本申请实施例提供的一种计算机设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
请参见图1a,是本发明实施例提供的一种数据处理的系统架构图。服务器10b通过交换机和通信总线与用户终端10a相连。服务器10b获取处于运行状态的目标程序的目标代码块;所述目标程序包括至少一个代码块,所述目标代码块为目标程序中任意一个代码块;服务器10b获取所述目标代码块对应的重组代码块,所述重组代码块是根据目标代码块中的代码指令,采用二进制插桩插入回调指令生成的代码块;服务器10b运行所述目标代码块对应的重组代码块,获取所述重组代码块的调度数据,根据所述调度数据确定所述目标程序的恶意行为。数据库10c与服务器10b中存储了目标程序对应的多个重组代码块,所述重组代码块是服务器10b对目标代码块中的代码指令进行重写生成重写代码指令,在所述重写代码指令中插入回调指令,根据所述重写代码指令和所述回调指令生成所述目标代码块对应的重组代码块。
本申请实施例涉及的用户终端包括:平板电脑、智能手机、个人电脑(PC)、笔记本电脑、掌上电脑等终端设备。
下面将结合图1b,为本申请实施例提供的具体实施场景进行说明,如图1b所示。
在分析恶意软件的行为过程中,软件在运行过程中有三个状态,包括Native态、翻译态、模拟态;
Native态:恶意软件正在运行其本身代码的状态。在恶意软件的Native态,通过制造异常对恶意软件的执行进行劫持,让其进入翻译态。具体方式一般为去掉恶意代码的可执行权限,或者某些自身业务内敏感内存的访问权限。然后接管异常,从而进入翻译态,具体的,可以针对恶意代码中的目标代码块。
翻译态:劫持恶意软件的执行,生成重组代码块的状态。在恶意软件的翻译态,通过解析恶意软件原本要执行的目标代码块的指令,将其重写到新的内存地址生成重写代码指令,在重写代码指令中插入回调指令,根据重写代码指令和回调指令生成目标代码块对应的重组代码块。然后,将会调度重组代码块执行。由于在重写代码指令中插入了回调指令,在重组代码块正常执行的同时,可以监控其行为。在回调指令中,记录恶意软件运行时的状态,包括:寄存器环境,内存环境。
模拟态:执行重组代码块中代码指令的状态,执行重组代码块中的代码指令包括恶意软件本身代码指令,以及插入的回调指令。回调指令将会保存的当时的运行环境,具体的回调指令包括:代码块调度回调指令、指令监控回调指令、返回地址监控回调指令,代码块调度回调指令用于监控跨模块调用以及所有API,指令监控回调指令用于内存、寄存器的访问监控,返回地址监控回调指令用于在监控API时,修改栈中返回地址,改为自身回调,在API执行后继续得到执行权限。
执行完成后,会回到翻译态,判断是否要继续翻译其他代码块。如此循环直到翻译态判断要退出到Native态,之后将执行原始代码,退出整个流程。
请参见图2,为本申请实施例提供了一种数据处理方法的流程示意图。如图2所示,本申请实施例的所述方法可以包括以下步骤S101-步骤S103。
S101,获取处于运行状态的目标程序的目标代码块;所述目标程序包括至少一个代码块,所述目标代码块为目标程序中任意一个代码块;
具体的,数据处理设备获取处于运行状态的目标程序的目标代码块,可以理解的是,数据处理设备可以是图1a所示的服务器10b,目标程序是终端设备中的应用程序,或者是处于被监控状态的应用程序,例如,目标程序可以是游戏平台中的恶意外挂软件,目标程序中包括至少一个代码块,目标程序在运行过程中是以代码块为单位执行,具体的,在实现目标程序中的某一个功能时,需要依次执行多个代码块才能完成,目标程序在实现某一个功能时,可以只执行目标程序中的部分代码块,目标代码块为目标程序中任意一个代码块。
S102,获取所述目标代码块对应的重组代码块,所述重组代码块是根据目标代码块中的代码指令,采用二进制插桩插入回调指令生成的代码块;
具体的,数据处理设备获取所述目标代码块对应的重组代码块,可以理解的是,目标代码块中包括代码指令,重组代码块是根据目标代码块中的代码指令,以及采用二进制插桩的方式插入回调指令生成的,具体的,对目标代码块中的代码指令进行重写生成重写代码指令,在重写代码指令中插入回调指令,回调指令用于获取目标代码块中的代码指令的运行环境,根据所述重写代码指令和所述回调指令生成所述目标代码块对应的重组代码块,重组代码块可以正常执行目标代码块中的代码指令,同时重组代码块的行为处于监控状态。
S103,运行所述目标代码块对应的重组代码块,获取所述重组代码块的调度数据,根据所述调度数据确定所述目标程序的恶意行为。
具体的,数据处理设备运行所述目标代码块对应的重组代码块,获取所述重组代码块的调度数据,根据所述调度数据确定所述目标程序的恶意行为,可以理解的是,重组代码块中包括目标代码块中的代码指令和插入的回调指令,根据代码指令和回调指令,获取所述重组代码块的调度数据,所述调度数据包括目标模块的调度数据以及内存、寄存器中的数据,具体的回调指令包括:代码块调度回调指令、指令监控回调指令、返回地址监控回调指令,代码块调度回调指令用于监控跨模块调用以及所有应用程序接口(ApplicationProgramming Interface,API),指令监控回调指令用于内存、寄存器的访问监控,返回地址监控回调指令用于在监控API时,修改栈中返回地址,改为自身回调,在API执行后继续得到执行权限。数据处理设备根据所述调度数据确定所述目标程序的恶意行为,具体的,以恶意外挂软件进行说明,通过运行重组代码块,监控对内存和寄存器的访问,可以获取对游戏人物参数对应的内存的访问结果,根据访问结果可以确定恶意外挂软件篡改游戏人物的参数。
在本申请实施例中,通过获取处于运行状态的目标程序的目标代码块,所述目标程序包括至少一个代码块,所述目标代码块为目标程序中任意一个代码块,进一步获取所述目标代码块对应的重组代码块,所述重组代码块是根据目标代码块中的代码指令,采用二进制插桩插入回调指令生成的代码块,最后运行所述目标代码块对应的重组代码块,获取所述重组代码块的调度数据,根据所述调度数据确定所述目标程序的恶意行为。可以通过目标代码块对应的重组代码块的调度数据确定目标程序的恶意行为,不用挂钩API即可监控所有的API调用,同时,也不依赖于操作系统提供的接口,提高了分析恶意软件行为的准确性。
请参见图3,为本申请实施例提供了一种数据处理方法的流程示意图。如图3所示,本申请实施例的所述方法可以包括以下步骤S201-步骤S206。
S201,确定目标程序的目标代码块,根据所述目标代码块在所述目标程序中插入中断程序,当所述目标程序处于运行状态时,响应针对所述目标代码块的中断程序;根据所述中断程序获取所述目标代码块。
具体的,数据处理设备确定目标程序的目标代码块,根据所述目标代码块在所述目标程序中插入中断程序,当所述目标程序处于运行状态时,响应针对所述目标代码块的中断程序;根据所述中断程序获取所述目标代码块,可以理解的是,目标代码块为目标程序中任意一个代码块,例如,目标程序是处于监控状态的恶意外挂软件,用户需要检测恶意外挂软件中其中一个代码块的运行状态,可以将该代码块确定为目标代码块;为了实现对目标程序的监控,可以对目标程序进行劫持,具体的,可以在目标程序的目标代码块中插入中断程序,当所述目标程序处于运行状态时,运行目标代码块之前,会执行目标代码块的中断程序,停止运行目标代码块,对目标程序进行劫持,还可以目标代码块的可执行权限,当目标程序运行至目标代码块时,会中断运行,停止运行目标代码块后,获取目标程序中的目标代码块。
S202,获取所述目标代码块的标签,将所述目标代码块的标签与重组代码块集合中代码块的标签进行匹配,生成匹配结果;所述重组代码块集合用于存储目标程序的代码块对应的重组代码块;
具体的,数据处理设备获取所述目标代码块的标签,将所述目标代码块的标签与重组代码块集合中代码块的标签进行匹配,生成匹配结果,可以理解的是,获取所述目标代码块的标签,代码块的标签是代码块具有唯一性的标识,具体的可以是将代码块的名称作为代码块的标签,或者根据子母和数字对代码块设置标签,重组代码块集合用于存储目标程序的代码块对应的重组代码块,重组代码块的标签与重组代码块对应的目标代码块的标签相同,将所述目标代码块的标签与重组代码块集合中代码块的标签进行匹配,当所述重组代码块集合中存在与所述目标代码块具有相同标签的代码块时,则确定匹配结果为匹配通过;当所述重组代码块集合中不存在与所述目标代码块具有相同标签的代码块时,则确定匹配结果为匹配不通过。
S203,当所述匹配结果为匹配通过时,则从所述重组代码块集合中获取与所述目标代码块具有相同标签的代码块,将与所述目标代码块具有相同标签的代码块确定为所述目标代码块对应的重组代码块;
具体的,可以理解的是,当所述匹配结果为匹配通过时,则确定所述重组代码块集合中存在所述目标代码块对应的重组代码块,数据处理设备则从所述重组代码块集合中获取与所述目标代码块具有相同标签的代码块,将与所述目标代码块具有相同标签的代码块确定为所述目标代码块对应的重组代码块。
S204,当所述匹配结果为匹配不通过时,对所述目标代码块中的代码指令进行重写生成重写代码指令,在所述重写代码指令中插入回调指令,根据所述重写代码指令和所述回调指令生成所述目标代码块对应的重组代码块。
具体的,可以理解的是,当所述匹配结果为匹配不通过时,则确定所述重组代码块集合中不存在所述目标代码块对应的重组代码块,数据处理设备对所述目标代码块中的代码指令进行重写生成重写代码指令,在所述重写代码指令中插入回调指令,根据所述重写代码指令和所述回调指令生成所述目标代码块对应的重组代码块;
重组代码块生成的具体过程如下:
数据处理设备解析所述目标代码块,生成目标代码块的代码指令,根据代码指令的运行环境将所述代码指令进行重写生成重写代码指令,将所述重写代码指令写入目标内存地址中,目标内存地址是与目标代码块的内存地址不同的内存地址,在所述重写代码指令中插入回调指令,将所述重写代码指令和所述回调指令进行编译,生成重组代码块。
S205,获取所述目标代码块的标签,将所述目标代码块的标签设置为所述重组代码块的标签;所述目标代码块对应的重组代码块与所述目标代码块具有相同的标签;将所述目标代码块对应的重组代码块存储至重组代码块集合中。
具体的,数据处理设备获取所述目标代码块的标签,将所述目标代码块的标签设置为所述重组代码块的标签,将所述目标代码块对应的重组代码块存储至重组代码块集合中,可以理解的是,将所述目标代码块对应的重组代码块存储至重组代码块集合中,并将所述重组代码块的标签设置为与其对应的目标代码块的标签相同,可以使重组代码块重复利用,当再次执行目标代码块时,可以根据标签从重组代码块集合中获取对应的重组代码块,提高了生成重组代码块的效率。
S206,运行所述目标代码块对应的重组代码块,获取所述重组代码块的调度数据,根据所述调度数据确定所述目标程序的恶意行为。
具体的,数据处理设备运行所述目标代码块对应的重组代码块,获取所述重组代码块的调度数据,根据所述调度数据确定所述目标程序的恶意行为,可以理解的是,数据处理设备解析所述重组代码块,重组代码块中包括目标代码块中的代码指令和插入的回调指令,在所述重组代码块对应的目标内存地址中运行所述重组代码块中的代码指令和回调指令,具体的回调指令包括:代码块调度回调指令、指令监控回调指令、返回地址监控回调指令,代码块调度回调指令用于监控跨模块调用以及所有API,指令监控回调指令用于内存、寄存器的访问监控,返回地址监控回调指令用于在监控API时,修改栈中返回地址,改为自身回调,在API执行后继续得到执行权限。数据处理设备获取所述重组代码块的接口调用数据和地址访问数据,接口调用数据为API的调度数据,地址访问数据为内存、寄存器的访问数据,将所述接口调用数据和所述地址访问数据与标准数据进行对比生成对比结果,标准数据为所述目标程序在没有恶意行为时的接口调用数据和地址访问数据,当所述对比结果出现异常,确定所述目标程序的恶意行为。
在本申请实施例中,通过获取处于运行状态的目标程序的目标代码块,所述目标程序包括至少一个代码块,所述目标代码块为目标程序中任意一个代码块,进一步获取所述目标代码块对应的重组代码块,所述重组代码块是根据目标代码块中的代码指令,采用二进制插桩插入回调指令生成的代码块,最后运行所述目标代码块对应的重组代码块,获取所述重组代码块的调度数据,根据所述调度数据确定所述目标程序的恶意行为。可以通过目标代码块对应的重组代码块的调度数据确定目标程序的恶意行为,不用挂钩API即可监控所有的API调用,同时,也不依赖于操作系统提供的接口,提高了分析恶意软件行为的准确性。
请参见图4,为本申请实施例提供了一种数据处理设备的结构示意图。所述数据处理设备可以是运行于计算机设备中的一个计算机程序(包括程序代码),例如该数据处理设备为一个应用软件;该设备可以用于执行本申请实施例提供的方法中的相应步骤。如图4所示,本申请实施例的所述数据处理设备1可以包括:目标代码块获取单元11、重组代码块获取单元12、代码块运行单元13。
目标代码块获取单元11,用于获取处于运行状态的目标程序的目标代码块;所述目标程序包括至少一个代码块,所述目标代码块为目标程序中任意一个代码块;
重组代码块获取单元12,用于获取所述目标代码块对应的重组代码块,所述重组代码块是根据目标代码块中的代码指令,采用二进制插桩插入回调指令生成的代码块;
代码块运行单元13,用于运行所述目标代码块对应的重组代码块,获取所述重组代码块的调度数据,根据所述调度数据确定所述目标程序的恶意行为。
所述目标代码块获取单元具体用于:
确定目标程序的目标代码块,根据所述目标代码块在所述目标程序中插入中断程序,当所述目标程序处于运行状态时,响应针对所述目标代码块的中断程序;
根据所述中断程序获取所述目标代码块。
请参见图4,本申请实施例的所述重组代码块获取单元12可以包括:标签匹配子单元121、代码块获取子单元122、代码块生成子单元123。
标签匹配子单元121,用于获取所述目标代码块的标签,将所述目标代码块的标签与重组代码块集合中代码块的标签进行匹配,生成匹配结果;所述重组代码块集合用于存储目标程序的代码块对应的重组代码块;
代码块获取子单元122,用于当所述匹配结果为匹配通过时,则从所述重组代码块集合中获取与所述目标代码块具有相同标签的代码块,将与所述目标代码块具有相同标签的代码块确定为所述目标代码块对应的重组代码块;
代码块生成子单元123,用于当所述匹配结果为匹配不通过时,对所述目标代码块中的代码指令进行重写生成重写代码指令,在所述重写代码指令中插入回调指令,根据所述重写代码指令和所述回调指令生成所述目标代码块对应的重组代码块。
所述标签匹配子单元121具体用于:
获取所述目标代码块的标签,将所述目标代码块的标签与重组代码块集合中代码块的标签进行匹配;
当所述重组代码块集合中存在与所述目标代码块具有相同标签的代码块时,则确定匹配结果为匹配通过;
当所述重组代码块集合中不存在与所述目标代码块具有相同标签的代码块时,则确定匹配结果为匹配不通过。
请参见图4,本申请实施例的所述数据处理设备1可以还包括:代码块存储单元14。
代码块存储单元14,用于获取所述目标代码块的标签,将所述目标代码块的标签设置为所述重组代码块的标签;所述目标代码块对应的重组代码块与所述目标代码块具有相同的标签;
将所述目标代码块对应的重组代码块存储至重组代码块集合中。
所述代码块生成子单元123具体用于:
解析所述目标代码块,生成目标代码块的代码指令,将所述代码指令进行重写生成重写代码指令;
将所述重写代码指令写入目标内存地址中;
在所述重写代码指令中插入回调指令,将所述重写代码指令和所述回调指令进行编译,生成重组代码块。
所述代码块运行单元13具体用于:
解析所述重组代码块,在所述重组代码块对应的目标内存地址中运行所述重组代码块中的代码指令和回调指令;
获取所述重组代码块的接口调用数据和地址访问数据,将所述接口调用数据和所述地址访问数据与标准数据进行对比生成对比结果,当所述对比结果出现异常,确定所述目标程序的恶意行为;所述标准数据为所述目标程序在没有恶意行为时的接口调用数据和地址访问数据。
在本申请实施例中,通过获取处于运行状态的目标程序的目标代码块,所述目标程序包括至少一个代码块,所述目标代码块为目标程序中任意一个代码块,进一步获取所述目标代码块对应的重组代码块,所述重组代码块是根据目标代码块中的代码指令,采用二进制插桩插入回调指令生成的代码块,最后运行所述目标代码块对应的重组代码块,获取所述重组代码块的调度数据,根据所述调度数据确定所述目标程序的恶意行为。可以通过目标代码块对应的重组代码块的调度数据确定目标程序的恶意行为,不用挂钩API即可监控所有的API调用,同时,也不依赖于操作系统提供的接口,提高了分析恶意软件行为的准确性。
请参见图5,为本申请实施例提供了一种计算机设备的结构示意图。如图5所示,所述计算机设备1000可以包括:至少一个处理器1001,例如CPU,至少一个网络接口1004,用户接口1003,存储器1005,至少一个通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。其中,用户接口1003可以包括显示屏(Display),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器1005可以是随机存取存储器(Random Access Memory,RAM),也可以是非易失性存储器(non-volatile memory,NVM),例如至少一个磁盘存储器。存储器1005可选的还可以是至少一个位于远离前述处理器1001的存储装置。如图5所示,作为一种计算机存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及数据处理应用程序。
在图5所示的计算机设备1000中,网络接口1004可提供网络通讯功能,用户接口1003主要用于为用户提供输入的接口;而处理器1001可以用于调用存储器1005中存储的数据处理应用程序,以实现上述图2-图3任一个所对应实施例中对所述数据处理方法的描述,在此不再赘述。
应当理解,本申请实施例中所描述的计算机设备1000可执行前文图2-图3任一个所对应实施例中对所述数据处理方法的描述,也可执行前文图4所对应实施例中对所述数据处理设备的描述,在此不再赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。
此外,这里需要指出的是:本申请实施例还提供了一种计算机存储介质,且所述计算机存储介质中存储有前文提及的数据处理设备所执行的计算机程序,且所述计算机程序包括程序指令,当所述处理器执行所述程序指令时,能够执行前文图2-图3任一个所对应实施例中对所述数据处理方法的描述,因此,这里将不再进行赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。对于本申请所涉及的计算机存储介质实施例中未披露的技术细节,请参照本申请方法实施例的描述。作为示例,程序指令可被部署为在一个计算设备上执行,或者在位于一个地点的多个计算设备上执行,又或者,在分布在多个地点且通过通信网络互连的多个计算设备上执行,分布在多个地点且通过通信网络互连的多个计算设备可以组成区块链系统。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述程序可存储于一计算机存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述存储介质可为磁碟、光盘、NVM或RAM等。
以上所揭露的仅为本申请较佳实施例而已,当然不能以此来限定本申请之权利范围,因此依本申请权利要求所作的等同变化,仍属本申请所涵盖的范围。
Claims (10)
1.一种数据处理方法,其特征在于,包括:
获取处于运行状态的目标程序的目标代码块;所述目标程序包括至少一个代码块,所述目标代码块为目标程序中任意一个代码块;
获取所述目标代码块对应的重组代码块,所述重组代码块是根据目标代码块中的代码指令,采用二进制插桩插入回调指令生成的代码块;
运行所述目标代码块对应的重组代码块,获取所述重组代码块的调度数据,根据所述调度数据确定所述目标程序的恶意行为。
2.根据权利要求1所述的方法,其特征在于,所述获取处于运行状态的目标程序的目标代码块,包括:
确定目标程序的目标代码块,根据所述目标代码块在所述目标程序中插入中断程序,当所述目标程序处于运行状态时,响应针对所述目标代码块的中断程序;
根据所述中断程序获取所述目标代码块。
3.根据权利要求1所述的方法,其特征在于,所述获取所述目标代码块对应的重组代码块,包括:
获取所述目标代码块的标签,将所述目标代码块的标签与重组代码块集合中代码块的标签进行匹配,生成匹配结果;所述重组代码块集合用于存储目标程序的代码块对应的重组代码块;
当所述匹配结果为匹配通过时,则从所述重组代码块集合中获取与所述目标代码块具有相同标签的代码块,将与所述目标代码块具有相同标签的代码块确定为所述目标代码块对应的重组代码块;
当所述匹配结果为匹配不通过时,对所述目标代码块中的代码指令进行重写生成重写代码指令,在所述重写代码指令中插入回调指令,根据所述重写代码指令和所述回调指令生成所述目标代码块对应的重组代码块。
4.根据权利要求3所述的方法,其特征在于,所述获取所述目标代码块的标签,将所述目标代码块的标签与重组代码块集合中代码块的标签进行匹配,生成匹配结果,包括:
获取所述目标代码块的标签,将所述目标代码块的标签与重组代码块集合中代码块的标签进行匹配;
当所述重组代码块集合中存在与所述目标代码块具有相同标签的代码块时,则确定匹配结果为匹配通过;
当所述重组代码块集合中不存在与所述目标代码块具有相同标签的代码块时,则确定匹配结果为匹配不通过。
5.根据权利要求3所述的方法,其特征在于,所述当所述匹配结果为匹配不通过时,对所述目标代码块中的代码指令进行重写生成重写代码指令,在所述重写代码指令中插入回调指令,根据所述重写代码指令和所述回调指令生成所述目标代码块对应的重组代码块之后,还包括:
获取所述目标代码块的标签,将所述目标代码块的标签设置为所述重组代码块的标签;所述目标代码块对应的重组代码块与所述目标代码块具有相同的标签;
将所述目标代码块对应的重组代码块存储至重组代码块集合中。
6.根据权利要求3所述的方法,其特征在于,所述对所述目标代码块中的代码指令进行重写生成重写代码指令,在所述重写代码指令中插入回调指令,根据所述重写代码指令和所述回调指令生成所述目标代码块对应的重组代码块,包括:
解析所述目标代码块,生成目标代码块的代码指令,将所述代码指令进行重写生成重写代码指令;
将所述重写代码指令写入目标内存地址中;
在所述重写代码指令中插入回调指令,将所述重写代码指令和所述回调指令进行编译,生成重组代码块。
7.根据权利要求1所述的方法,其特征在于,所述运行所述目标代码块对应的重组代码块,获取所述重组代码块的调度数据,根据所述调度数据确定所述目标程序的恶意行为,包括:
解析所述重组代码块,在所述重组代码块对应的目标内存地址中运行所述重组代码块中的代码指令和回调指令;
获取所述重组代码块的接口调用数据和地址访问数据,将所述接口调用数据和所述地址访问数据与标准数据进行对比生成对比结果,当所述对比结果出现异常,确定所述目标程序的恶意行为;所述标准数据为所述目标程序在没有恶意行为时的接口调用数据和地址访问数据。
8.一种数据处理设备,其特征在于,包括:
目标代码块获取单元,用于获取处于运行状态的目标程序的目标代码块;所述目标程序包括至少一个代码块,所述目标代码块为目标程序中任意一个代码块;
重组代码块获取单元,用于获取所述目标代码块对应的重组代码块,所述重组代码块是根据目标代码块中的代码指令,采用二进制插桩插入回调指令生成的代码块;
代码块运行单元,用于运行所述目标代码块对应的重组代码块,获取所述重组代码块的调度数据,根据所述调度数据确定所述目标程序的恶意行为。
9.一种计算机存储介质,其特征在于,所述计算机存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时,执行如权利要求1-7任一项所述的方法。
10.一种计算机设备,其特征在于,其特征在于,包括:处理器和存储器;其中,所述存储器存储有计算机程序,所述计算机程序适于由所述处理器加载并执行如权利要求1-7任意一项的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010966830.5A CN112100622A (zh) | 2020-09-15 | 2020-09-15 | 一种数据处理方法以及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010966830.5A CN112100622A (zh) | 2020-09-15 | 2020-09-15 | 一种数据处理方法以及设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112100622A true CN112100622A (zh) | 2020-12-18 |
Family
ID=73758643
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010966830.5A Pending CN112100622A (zh) | 2020-09-15 | 2020-09-15 | 一种数据处理方法以及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112100622A (zh) |
-
2020
- 2020-09-15 CN CN202010966830.5A patent/CN112100622A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10303490B2 (en) | Apparatus and method for optimizing startup of embedded system | |
CN105302711B (zh) | 一种应用修复方法、装置及终端 | |
CN104809045B (zh) | 监控脚本的运行方法及装置 | |
CN109271789B (zh) | 恶意进程检测方法、装置、电子设备及存储介质 | |
US10372908B2 (en) | System and method for detecting malware in a stream of bytes | |
CN109408261B (zh) | 应用程序崩溃处理方法、装置、计算机设备和存储介质 | |
CN111008132B (zh) | Android系统的应用调试方法、装置、计算机设备和存储介质 | |
US11055416B2 (en) | Detecting vulnerabilities in applications during execution | |
CN113569246A (zh) | 漏洞检测方法、装置、计算机设备和存储介质 | |
CN108595319B (zh) | 函数选取方法和服务器 | |
CN113391874A (zh) | 一种虚拟机检测对抗方法、装置、电子设备及存储介质 | |
CN106997313B (zh) | 一种应用程序的信号处理方法、系统及终端设备 | |
CN113467981A (zh) | 异常处理的方法和装置 | |
US20180144134A1 (en) | Detection system and detection method | |
CN110414218B (zh) | 内核检测方法、装置、电子设备及存储介质 | |
CN113742224A (zh) | 测试系统、方法、装置、计算机设备和存储介质 | |
CN108009039B (zh) | 终端信息的记录方法、装置、存储介质及电子设备 | |
CN112100622A (zh) | 一种数据处理方法以及设备 | |
CN113609478B (zh) | 一种ios平台应用程序篡改检测方法及装置 | |
CN112631949B (zh) | 一种调试方法、装置、计算机设备及存储介质 | |
CN114489698A (zh) | 应用程序安装方法和装置 | |
CN115455414A (zh) | 一种安全检测方法和装置 | |
CN113010199B (zh) | 应用更新方法、装置、计算机设备和存储介质 | |
CN113407438B (zh) | 模块的测试方法、计算机设备和存储介质 | |
CN110990078B (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 |