CN109145598B - 脚本文件的病毒检测方法、装置、终端及存储介质 - Google Patents

脚本文件的病毒检测方法、装置、终端及存储介质 Download PDF

Info

Publication number
CN109145598B
CN109145598B CN201710465968.5A CN201710465968A CN109145598B CN 109145598 B CN109145598 B CN 109145598B CN 201710465968 A CN201710465968 A CN 201710465968A CN 109145598 B CN109145598 B CN 109145598B
Authority
CN
China
Prior art keywords
script
file
script file
running
virus
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
Application number
CN201710465968.5A
Other languages
English (en)
Other versions
CN109145598A (zh
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.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen 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 Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN201710465968.5A priority Critical patent/CN109145598B/zh
Publication of CN109145598A publication Critical patent/CN109145598A/zh
Application granted granted Critical
Publication of CN109145598B publication Critical patent/CN109145598B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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

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

本申请公开了一种脚本文件的检测方法、装置、终端及存储介质,属于病毒检测领域。所述方法包括:在目标程序的运行过程中,运行预先在该目标程序中注入的监控文件所包括的监控代码,该目标程序是指集成有脚本虚拟机的程序;通过该监控代码的运行,获取至少一个调用函数指针被调用时所使用的方法名和/或脚本参数,该至少一个调用函数指针是指该目标程序运行非PE脚本文件的过程中所调用的自动化对象的分发接口的调用函数指针;基于获取到的方法名和/或脚本参数,对该非PE脚本文件进行病毒检测。本申请实现了对非PE脚本文件的动态病毒检测,无需为非PE脚本文件单独开发脚本虚拟机,减小了脚本虚拟机的开发成本,提高了检测效率。

Description

脚本文件的病毒检测方法、装置、终端及存储介质
技术领域
本发明涉及病毒检测领域,特别涉及一种脚本文件的病毒检测方法、装置终端及存储介质。
背景技术
脚本文件是一种计算机编程文件,包括非PE(Portable Executable,可移植可执行)脚本文件。非PE脚本文件是指不能在终端的操作***上直接执行、需要借助脚本虚拟机才能执行的脚本文件。一般终端上的WScript(脚本宿主)、浏览器、Office系列软件等程序都集成有脚本虚拟机,能够运行非PE脚本文件。实际应用中,为了保证操作***的安全性,通常需要对终端中的非PE脚本文件进行病毒检测,以确定非PE脚本文件是否为病毒文件。
目前,基本都是通过安全厂商开发的病毒检测软件,并采用静态检测方法对非PE脚本文件进行病毒检测,即采用特征匹配的方式进行病毒检测。由于非PE脚本文件通常会被加密,因此,在进行特征匹配之前,还需要先通过病毒检测软件中集成的脚本虚拟机运行非PE脚本文件,得到解密后的非PE脚本文件,然后再依次从病毒特征库中取出一条病毒特征与解密后的非PE脚本文件进行匹配,检查该非PE脚本文件中是否存在该病毒特征,如果存在,则确定该非PE脚本文件为病毒文件,如果不存在,则继续匹配下一条病毒特征,直至遍历完所有病毒特征为止。
但是不同的非PE脚本文件可能使用不同的脚本语言,而一种脚本虚拟机只能解密一种脚本语言的非PE脚本文件,因此为了实现多种脚本语言的非PE脚本文件的病毒检测,也就需要开发多种脚本虚拟机,成本巨大。而且由于脚本虚拟机的代码量往往很大,因此脚本虚拟机也将影响病毒检测软件的检测效率。
发明内容
为了解决相关技术中存在的需要开发多种脚本虚拟机,开发成本大且影响运行效率的问题,本发明实施例提供了一种脚本文件的病毒检测方法、装置、终端及存储介质。所述技术方案如下:
第一方面,提供了一种脚本文件的病毒检测方法,所述方法包括:
在目标程序的运行过程中,运行预先在所述目标程序中注入的监控文件所包括的监控代码,所述目标程序是指集成有脚本虚拟机的程序;
通过所述监控代码的运行,获取至少一个调用函数指针被调用时所使用的方法名和/或脚本参数,所述至少一个调用函数指针是指所述目标程序运行非可移植可执行PE脚本文件的过程中所调用的自动化对象的分发接口的调用函数指针,所述自动化对象是指集成有分发接口的组件对象模型COM对象;
基于获取到的方法名和/或脚本参数,对所述非PE脚本文件进行病毒检测。
第二方面,提供了一种脚本文件的病毒检测装置,所述装置包括:
运行模块,用于在目标程序的运行过程中,运行预先在所述目标程序中注入的监控文件所包括的监控代码,所述目标程序是指集成有脚本虚拟机的程序;
获取模块,用于通过所述监控代码的运行,获取至少一个调用函数指针被调用时所使用的方法名和/或脚本参数,所述至少一个调用函数指针是指所述目标程序运行非可移植可执行PE脚本文件的过程中所调用的自动化对象的分发接口的调用函数指针,所述自动化对象是指集成有分发接口的组件对象模型COM对象;
检测模块,用于基于获取到的方法名和/或脚本参数,对所述非PE脚本文件进行病毒检测。
第三方面,提供了一种终端,其特征在于,所述终端包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述指令、所述程序、所述代码集或所述指令集由所述处理器加载并执行以实现上述第一方面所述的脚本文件的病毒检测方法。
第四方面,提供了一种计算机可读存储介质,其特征在于,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述指令、所述程序、所述代码集或所述指令集由处理器加载并执行以实现上述第一方面所述的脚本文件的病毒检测方法。
本发明实施例提供的技术方案带来的有益效果是:
本发明实施例中,可以在程序实际运行非PE脚本文件的过程中,通过预先注入的监控文件对调用自动化对象的分发接口的调用函数指针的行为进行监控,并获取所有调用函数指针被调用时所使用的方法名和/或脚本参数,由于非PE脚本文件的恶意行为往往通过在运行过程中调用自动化对象的分发接口的调用函数指针来实现,且调用时所使用的方法名和/或脚本参数能够真实反映恶意行为,因此通过获取到的方法名和/或脚本参数即能够确定该非PE脚本文件是否能够产生恶意行为,实现对非PE脚本文件的病毒检测。也即是,本申请可以在非PE脚本文件所使用的自动化COM组件架构的基础上,通过注入的监控文件实现对非PE脚本文件的动态病毒检测,因此也就无需为非PE脚本文件单独开发支持多种非PE脚本语言的脚本虚拟机,通过运行开发的脚本虚拟机对非PE脚本文件进行病毒检测,从而减小了脚本虚拟机的开发成本,提高了检测效率。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1A是本发明实施例提供的一种脚本文件的病毒检测方法流程图;
图1B是一种COM基本原理示意图;
图1C是一种脚本虚拟机运行非PE脚本文件的示意图;
图1D是本发明实施例提供的一种自动化对象的函数指针表的示意图;
图2是本发明实施例提供的另一种脚本文件的病毒检测方法流程图;
图3A是本发明实施例提供的一种脚本文件的检测装置的框图;
图3B是本发明实施例提供的一种获取模块302的结构示意图;
图3C是本发明实施例提供的另一种脚本文件的检测装置的框图;
图3D是本发明实施例提供的又一种脚本文件的检测装置的框图;
图4是本发明实施例提供的一种终端400的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
在对本发明实施例进行详细地解释说明之前,先对本发明实施例涉及的名词、应用场景和实施环境进行简单说明。
首先,对本发明实施例涉及的名词进行说明。
脚本文件
脚本文件是指使用特定的脚本语言,依据一定的格式编写的文件。脚本语言是为了缩短传统的“edit-compile-link-run”(编写、编译、链接、运行)过程而创建的计算机编程语言。
PE文件
PE文件是一种能够在操作***上直接执行的程序文件,常见的EXE(ExecutableProgram,可执行程序)、COM(Component Object Model,组件对象模型)、DLL(Dynamic LinkLibrary,动态链接库)等都是PE文件,主要使用在32位或64位的Windows等操作***上。
COM
COM是指一种面向对象的编程模式,定义了对象在单个应用程序内部或多个应用程序之间的行为方式,是网页服务器与客户端、增益集与Office系列软件之间交互的一项软件组件技术。
自动化对象
自动化对象是指集成有IDispatch(分发)接口的COM对象。
DLL
DLL是指一种软件文件类型,其中包括各种类型的函数。在Windows等操作***中,许多应用程序并不是一个完整的可执行文件,它们被分割成一些相对独立的动态链接库,即DLL文件,放置于操作***中。当操作***执行某一个程序时,相应的DLL文件就会被调用。一个应用程序可有多个DLL文件,一个DLL文件也可能被几个应用程序所共用。
接口
接口是指同一计算机程序不同功能层之间的通信规则,这些通信规则往往被抽象为一组函数。
函数指针
函数指针是指指向程序内存空间中一个地址的变量,从这个地址开始的一段指令是一个函数的头部。
其次,对本发明实施例的应用场景进行说明。
实际应用中,终端通常存储有非PE脚本文件,或者能够在运行的过程中下载非PE脚本文件,有些非PE脚本文件中可能会包括恶意代码,导致终端在运行这些非PE脚本文件的过程中将对终端产生恶意修改行为,这种非PE脚本文件即为病毒文件。
比如,某些非PE脚本文件中可能包括一些病毒代码,终端通过运行该PE脚本文件将会对操作***进行病毒感染,即将对操作***进行恶意修改,从而影响终端的安全。再比如,某些非PE脚本文件中可能包括黄色网站、推销网站或者携带病毒的网站等恶意网站的网址,终端运行该PE脚本文件将会强制访问这些恶意网站,从而影响用户的正常使用。
因此,为了保证终端的安全和用户的正常使用,也就需要对终端中的非PE脚本文件进行病毒检测,以确定该非PE脚本文件是否为病毒文件。
最后,对本发明实施例的实施环境进行说明。
本发明实施例应用于终端中,该终端具体可以为计算机、智能手机、平板电脑、笔记本电脑、上网本、个人数字助理等,本发明实施例对此不做限定。
其中,该终端存储有非PE脚本文件,或者能够在运行的过程中下载非PE脚本文件,终端需要对存储的或者下载的非PE脚本文件进行病毒检测。示例的,该终端可以通过安装的安全软件实现对非PE脚本文件的病毒检测。该安全软件可以为安全管家或者杀毒软件等。
其中,非PE脚本文件主要使用在终端的操作***上,终端的操作***可以为Windows操作***、Unix操作***、Linux操作***、Mac OS操作***等计算机操作***,也可以为IOS操作***、安卓操作***、Windows Phone操作***等手机操作***,本发明实施例对此不做限定。
图1A是本发明实施例提供的一种脚本文件的病毒检测方法流程图,该方法用于终端中。参见图1A,该方法包括:
步骤101:在目标程序的运行过程中,运行预先在该目标程序中注入的监控文件所包括的监控代码,该目标程序是指集成有脚本虚拟机的程序。
其中,该目标程序可为WScript、浏览器、WPS、Office、PowerShell(一种命令行外壳程序和脚本环境)等程序。
本发明实施例中,可以预先在目标程序启动时,将该监控文件注入到目标程序的进程中,则在目标程序运行的过程中,即会运行该监控文件。
其中,该监控文件中包括监控代码,监控代码用于对该目标程序运行非PE脚本文件的过程进行监控,具体用于监控该目标程序运行非PE脚本文件的过程中调用自动化对象的分发接口的行为,并在监控到分发接口的调用行为时,分析这种调用行为是否会对终端进行恶意修改,进行确定所运行的非PE脚本文件是否为病毒文件。
实际应用中,对于非PE脚本文件来说,在其运行的过程中若想实现读写文件、连接网络等具体操作,也就必须与底层的操作***进行交互,而与操作***交互的接口也即是自动化对象的分发接口。因此,本发明实施例中,可以通过监控运行非PE脚本文件过程中调用分发接口的行为,分析非PE脚本文件想要实现的实际操作,从而对非PE脚本文件进行病毒检测。也即是,本发明实施例中,无需判断非PE脚本文件是否进行过加密,也无需判断该非PE脚本文件使用了哪种脚本语言,而是可以在非PE脚本文件实际运行的过程中,对运行的非PE脚本文件进行动态病毒检测。
其中,监控代码为开发人员编写的用于实现上述功能的技术实现代码,实际应用中,可以将监控代码编译成一个监控文件,以便后续注入到目标程序的进程中。例如,该监控文件可以为DLL文件。
进一步地,可以通过终端中预先加载的驱动文件将该监控文件注入到该目标程序中,该驱动文件用于监控目标程序是否启动,当监控到目标程序启动时,即将该监控文件注入到该目标程序的进程中。
其中,该目标程序可以由终端默认设置,也可以由用户手动设置,本发明实施例对此不做限定。例如,终端可以安装安全软件,该安全软件包括驱动文件和监控文件,用户可以在终端中启动该安装软件,并可以在该安全软件的设置界面中设置一个或多个目标程序,则该安全软件即可通过驱动文件监控用户设置的目标程序的启动,当监控到任一目标程序启动时,即可将监控文件注入到该目标程序的进程中。
步骤102:通过该监控代码的运行,获取至少一个调用函数指针被调用时所使用的方法名和/或脚本参数,该至少一个调用函数指针是指该目标程序运行非PE脚本文件的过程中所调用的自动化对象的分发接口的调用函数指针。
实际应用中,在目标程序的运行过程中,该目标程序可能会通过集成的脚本虚拟机运行非PE脚本文件。比如,当该目标程序为浏览器时,浏览器可能会打开某个网页的过程中,运行该网页中嵌入的非PE脚本文件。再比如,当该目标程序为word时,word可能会在打开某个word文档的过程中,运行该word文档中嵌入的非PE脚本文件。而且,在目标程序运行非PE脚本文件的过程中,还可能会调用自动化对象的分发接口的调用函数指针。
其中,该至少一个调用函数指针为该目标程序运行非PE脚本文件的过程中所调用的所有调用函数指针。监控文件中的监控代码具体用于对该目标程序运行非PE脚本文件的过程中调用自动化对象的分发接口的调用函数指针的行为进行监控,且用于每监控到调用分发接口的调用函数指针的行为时,获取调用函数指针被调用时所使用的方法名和/或脚本参数。
其中,该方法名是指调用的自动化对象的方法名,脚本参数是指非PE脚本文件中该方法名对应的脚本参数。
其中,自动化对象是指集成有分发接口的COM对象,具体通过COM技术和自动化技术实现。为了便于理解本申请,接下来将先对COM技术、自动化技术和自动化对象进行详细解释。
COM技术
实际应用中,为了便于终端进行各种事务处理,操作***厂商提供了COM技术。COM技术是一种与语言无关的组件化编程技术,开发人员可以根据特定情况选择特定语言工具实现COM组件的开发,具体可以将完成某种功能的数据与方法绑定在一起,抽象为一个COM对象,一个COM对象能够完成一种具体事务逻辑处理计算任务。
而且,COM技术定制了一套二进制标准,只要编程语言遵循这套二进制标准,就可以提供COM对象给其它程序使用,也能使用其它程序提供的COM对象。COM的二进制标准中有一张函数指针表,表中的每项是一个函数指针,应用程序通过索引内存中的函数指针来调用对应的函数,并且根据接口函数的签名来传递参数、获取返回值,从而完成功能。任何COM对象的内存中都有一张这样的函数指针表。
操作***底层通常封装有多个COM对象,程序在运行过程中,通过调用底层的这些COM对象,能够方便地实现各种功能。
图1B是一种COM基本原理示意图。如图1B所示,COM技术为每个COM对象提供了一个接口指针(pointer to interface),接口指针对应着COM对象的接口(interface)。COM对象的接口中包括函数指针表指针(pointer to vtable),函数指针表指针对应着该接口的函数指针表(vtable),函数指针表中包括多个函数指针(method pointer)。
自动化技术
自动化技术建立在COM技术基础之上,是操作***厂商为解决操作***上脚本语言的运行而提出的一种技术。从理论上来说,任何运行于Windows等操作***上的脚本语言都可以使用自动化技术,实际上已经有JavaScript、VBScript、Office宏、JScript、PowerShell等多种脚本语言应用了自动化技术。
自动化技术的核心是分发接口,即IDispatch接口,IDispatch接口是实现了自动化的COM对象暴露出来的标准接口。
自动化对象
自动化对象是指实现了自动化技术、集成有IDispatch接口的COM对象。
每个自动化对象支持多种方法,每种方法用于实现该自动对象对应的功能下的一种具体事务。比如,该多种方法可以包括实现下载的方法、实现访问网站的方法、实现运行程序的方法等。
每个自动化对象对应一个IDispatch接口,且每个自动化对象包括一个函数指针表,函数指针表中包括多个函数指针,其中一个函数指针为调用函数指针,即Invoke函数指针。
例如,若图1B指示的COM对象为实现了自动化技术的自动化对象,则图1B中的接口即为IDispatch接口,且IDispatch接口的函数指针表中包括Invoke函数指针。
非PE脚本文件在运行过程中,需要通过调用自动化对象的IDispatch接口的Invoke函数指针,来调用自动化对象的方法。具体可以基于自动化对象的方法和非PE脚本文件中该方法对象的脚本参数,调用IDispatch接口的Invoke函数指针,通过调用该Invoke函数指针调转至Invoke函数,然后通过该Invoke函数调用与该方法对应的方法函数,通过该方法函数实现该方法对应的实际操作。
也即是,非PE脚本文件如果想要完成与外界交互(如读写文件、连接网络),都要调用操作***提供的自动化对象的方法,且这种调用一定会经过IDispatch接口的Invoke函数指针。因此,本发明实施例中,通过HOOK这个Invoke函数指针,就能达到监视非PE脚本文件的调用行为的目的。HOOK是指接触到需要修改的函数的入口点,改变它的地址跳向自定义函数。本发明实施例中,可以通过该监控文件HOOK Invoke函数指针。
具体地,步骤102可以通过以下步骤1021-1024实现:
步骤1021:通过监控代码的运行,获取运行该非PE脚本文件的过程中需要调用的所有自动化对象的分发接口的函数指针表,每个函数指针表包括对应自动化对象的分发接口的调用函数指针。
实际应用中,目标程序运行非PE脚本文件时,通常会先通过集成的与该非PE脚本文件的脚本语言对应的脚本解释器对该非PE脚本文件进行语法解释和词法解释,得到该非PE脚本文件需要调用的所有自动化对象的方法名和对象名。然后基于得到的所有对象名创建自动化对象,并获取每个自动化对象的函数指针表。
其中,创建自动化对象是指根据对象名从磁盘中获取该对象名对应的自动化对象,并将获取的自动化对象存储在内存中,然后对该自动化对象进行初始化处理,以便后续调用该自动化对象。且所创建的自动化对象包括该自动化对象的函数指针表,即创建的自动化对象的函数指针表将与该自动化对象一起存储在内存中。
图1C是一种脚本虚拟机运行非PE脚本文件的示意图,参见图1C所示,该非PE脚本文件的代码为:
“Var ws=new ActiveXObject(‘WScript.Shell’)ws.Run(‘notepad.exe’)
该非PE脚本文件使用的脚本语言为JavaScript脚本语言,该脚本虚拟机为JavaScript脚本虚拟机。实际应用中,该JavaScript脚本虚拟机可以集成在目标程序中,该目标程序可以为浏览器等程序。
在JavaScript脚本虚拟机运行该非PE脚本文件的过程中,首先,该JavaScript脚本虚拟机会对该非PE脚本文件进行语法解释和词法解释,得到两个名称,一个是“WScript.Shell”,一个是“Run”。“WScript.Shell”是COM对象名,对应WshShell自动化对象,“Run”是该自动化对象对应的方法名。
然后,JavaScript脚本虚拟机会调用CoCreateInstance函数创建该对象名对应的WshShell自动化对象,并获取此对象的IDispatch接口的函数指针表。其中,创建WshShell自动化对象实现代码可以为“pDispatch=CoCreateInstance(CLSID_IWshShell)”。
步骤1022:将获取得到的每个函数指针表中的调用函数指针修改为自定义函数指针。
具体地,该目标程序的监控文件能够监控运行该非PE脚本文件的过程中创建自动化对象的行为,当监控到创建自动化对象的行为时,即可将创建的所有自动化对象中每个自动化对象的函数指针表中的调用函数指针修改为自定义函数指针。
将某个自动化对象的函数指针表中的调用函数指针修改为自定义函数指针之后,当运行该非PE脚本文件的过程中需要调用该自动化对象的分发接口的调用函数指针时,实际调用的则是该自定义函数指针。
其中,该自定义函数指针可以包括两部分功能,第一部分功能用于获取该自定义函数指针被调用时所使用的方法名和/或脚本参数,第二部分的功能为原有调用函数指针具有的功能,也即是,还可以用于基于使用的方法名和脚本参数调用该方法名对应的方法函数。
例如,参见图1D,所创建的自动化对象的函数指针表中包括多个函数指针,具体可以包括Queryinterface、GetIDsofNames、Invoke、run、Exec等函数指针,本发明实施例中,通过运行的监控代码可以将该函数指针表中的Invoke函数指针修改为自定义函数指针MyInvoke。
步骤1023:对该目标程序运行该非PE脚本文件的过程进行监控。
具体可以通过修改后的自定义函数指针,对目标程序运行该非PE脚本文件的过程中调用自定义函数指针的行为进行监控。
步骤1024:当每监控到自定义函数指针在运行该非PE脚本文件的过程中被调用时,获取调用该自定义函数指针时所使用的方法名和/或脚本参数。
也即是,每当该目标程序在运行该非PE脚本文件的过程中,通过某个自定义对象的方法名和该方法名对应的脚本参数调用了该自动化对象的分发接口的自定义函数指针时,即可通过该自定义函数指针获取调用时所使用的方法名和/或脚本参数。
具体地,参见图1C,在创建自动化对象之后,该JavaScript脚本虚拟机可以先调用IDispatch的GetIDsOfNames方法,得到“Run”这个方法名的ID(Identification,身份标识号)。其中,获取方法名的实现代码为:
“ID_Run=pDispatch->GetIDsOfNames(‘Run’)”。
现有非PE脚本文件的COM组件架构中,参见图1C,当需要调用方法名对应的方法函数时,JavaScript脚本虚拟机可以使用得到的方法名的ID和方法名对应的脚本参数调用IDispatch的Invoke函数指针,通过Invoke函数指针调用方法名对应的方法函数。此处方法名对应的脚本参数为Run函数的参数‘notepad.exe’,调用Invoke函数指针的实现代码为:
“Ret=pDispatch->Invoke(ID_Run,‘notepad.exe’)”。
本发明实施例中,则可以通过运行的监控代码对现有非PE脚本文件的COM组件架构进行修改,也即是,监控非PE脚本文件创建自动化对象的行为,当监控到创建自动化对象的行为时,将创建的自动化对象的函数指针表中的调用函数指针修改为自定义函数指针。然后在运行该非PE脚本文件的过程中,当需要调用IDispatch的Invoke函数指针表时,该目标程序的JavaScript脚本虚拟机将使用得到的ID和该非PE脚本文件中Run函数的脚本参数,调用IDispatch的函数指针表中的自定义函数指针,通过该自定义函数指针调转至自定义函数,并通过该自定义函数获取调用该自定义函数指针时所使用的方法名和/或脚本参数。
基于图1C所示实施例,通过本发明实施例提供的方法将Invoke函数指针表修改为自定义函数指针My Invoke之后,调用自定义函数指针My Invoke的实现代码为“Ret=pDispatch->My Invoke(ID_Run,‘notepad.exe’)”。
步骤103:基于获取到的方法名和/或脚本参数,对该非PE脚本文件进行病毒检测。
其中,基于获取到的方法名和/或脚本参数,对所述非PE脚本文件进行病毒检测,包括以下方式中的任一种:
第一种实现方式:基于获取到的方法名对该非PE脚本文件进行病毒检测。
具体地,可以先确定获取到的方法名对应的操作行为,然后基于确定的操作行为确定该非PE脚本文件是否为病毒文件。
由于方法名可以用于指示具体的操作行为,比如下载方法的方法名可以用于指示下载操作,访问网络的方法的方法名可以用于指示访问网络的行为,因此根据获取到的多个方法名对应的操作行为,可以确定出该非PE脚本文件想要实现的操作流程,根据该操作流程即可确定该非PE脚本文件是否为病毒文件。
例如,获取到的方法名对应的操作行为分别为下载和运行时,说明该非PE脚本文件想要实现的操作流程为先下载、后运行,一般而言这种先下载后运行的操作行为通常具有极大风险,比如可能会下载病毒再运行病毒,或者强制下载用户不安装的程序再安装运行该程序,因此当获取到的方法名对应的操作行为分别为下载和运行时,即可将该非PE脚本文件确定为病毒文件。
当然,实际应用中,也可以在获取到的方法名对应其他风险操作行为时,确定该非PE脚本文件为病毒文件,本发明实施例对此不做限定。
第二种实现方式:基于获取到的脚本参数对该非PE脚本文件进行病毒检测。
其中,该脚本参数为通过目标程序的脚本虚拟机对该非PE脚本文件进行解密后得到的部分脚本代码,能够反映出脚本的实质特征,因此可以采用特征匹配的方式对该脚本参数进行病毒检测。
具体地,可以将第一病毒特征库中的特征与获取到的脚本参数依次进行匹配,如果获取到的脚本参数中存在该预设病毒特征库中的预设数目个特征,则确定该非PE脚本文件为病毒文件,该第一病毒特征库中的特征包括脚本参数特征。
其中,该第一病毒特征库可以为安全软件的病毒特征库,也可以为安全软件之外的终端存储的其他病毒特征库,也可以为云端的病毒特征库,本发明实施例对此不做限定。该预设数目可以由终端默认设置,也可以由用户设置,本发明实施例对此不做限定。
例如,可以安全软件中可以存储第一病毒特征库,当通过自定义函数指针获取到脚本参数时,可以将获取到的脚本参见与该预设病毒特征库中的特征进行匹配,也即是,依次从预设病毒特征库中取出一条特征与获取的每个脚本参数进行匹配,检查该脚本参数中是否存在该特征,如果存在,则确定该该脚本参数与该特征匹配,直至遍历完所有病毒特征为止。如果获取到的脚本参数中有预设数目个脚本参数与该第一病毒特征库中的特征匹配,则确定该非PE脚本文件为病毒文件。
再例如,当获取的脚本参数为网址时,可以将该网址与浏览器中的风险网址依次进行匹配,当该网址与存储的某个风险网址相同时,确定该非PE脚本文件为病毒文件。
第三种实现方式:基于获取到的方法名和脚本参数对该非PE脚本文件进行病毒检测。
具体地,将第二病毒特征库中的特征与获取到的方法名和脚本参数组成的字符串依次进行匹配,如果组成的字符串中存在第二病毒特征库中的预设数目个特征,则确定该非PE脚本文件为病毒文件,该第二病毒特征库中的特征包括方法名特征和脚本参数特征。
也即是,可以将获取的每个方法名和对应的脚本参数组成子符串,将组成的每个字符串与第二病毒特征库中的特征依次进行匹配,当组成的字符串中的方法名与某个特征中的方法名特征匹配,且该字符串中的脚本参数特征也与该特征中的脚本参数特征匹配时,则确定该组成字符串与该特征匹配。当组成的字符串中有预设数目个字符串与第二病毒特征库中的特征匹配时,则确定该非PE脚本文件为病毒文件。
进一步地,为了对非PE脚本文件中的病毒进行查杀,在基于获取到的方法名和/或脚本参数,对非PE脚本文件进行病毒检测之后还包括:若确定该非PE脚本文件是病毒文件,则结束运行该非PE脚本文件,和/或,显示提醒信息,该提醒信息用于提醒该非PE脚本文件是病毒文件;若确定该非PE脚本文件不是病毒文件,则基于获取到方法名和脚本参数调用对应的方法函数,以完成该非PE脚本文件的运行。
当确定该非PE脚本文件不是病毒文件时,说明该非PE脚本文件不存在病毒代码,因此可以基于调用自定义函数指针时所使用的方法名和脚本参数调用所使用的方法名对应的方法函数,以实现该方法对应的实际操作。具体可以通过调用该自定义函数指针对应的调用函数指针,来调用方法名对应的方法函数。
但是当确定该非PE脚本文件是病毒文件时,为了规避风险,则可以结束当前运动的该非PE脚本文件,也即是,停止调用获取的方法名对应的方法函数,以避免调用该方法名对应的方法函数的过程中,终端被恶意侵害。或者,也可以显示提醒信息,以提醒用户该非PE脚本文件是病毒文件,以便用户根据该提醒消息手动结束该非PE脚本文件运行,并对该非PE脚本文件进行杀毒。或者,也可以结束当前运动的该非PE脚本文件,并显示该提醒消息,以便指示用户该非PE脚本文件为什么会结束运行。
进一步地,当确定该非PE脚本文件是病毒文件,还可以将该非PE脚本文件的病毒特征增加至预设病毒特征库,或者将该非PE脚本文件上传至服务器,以便服务器更新病毒数据库等。
本发明实施例中,可以在程序实际运行非PE脚本文件的过程中,通过预先注入的监控文件对调用自动化对象的分发接口的调用函数指针的行为进行监控,并获取所有调用函数指针被调用时所使用的方法名和/或脚本参数,由于非PE脚本文件的恶意行为往往通过在运行过程中调用自动化对象的分发接口的调用函数指针来实现,且调用时所使用的方法名和/或脚本参数能够真实反映恶意行为,因此通过获取到的方法名和/或脚本参数即能够确定该非PE脚本文件是否能够产生恶意行为,实现对非PE脚本文件的病毒检测。也即是,本申请可以在非PE脚本文件所使用的自动化COM组件架构的基础上,通过注入的监控文件实现对非PE脚本文件的动态病毒检测,因此也就无需为非PE脚本文件单独开发支持多种非PE脚本语言的脚本虚拟机,通过运行开发的脚本虚拟机对非PE脚本文件进行病毒检测,从而减小了脚本虚拟机的开发成本,提高了检测效率。
图2是本发明实施例提供的另一种脚本文件的病毒检测方法流程图,该方法用于终端中。参见图2,该方法包括:
步骤201:在目标程序的运行过程中,运行预先在该目标程序中注入的监控文件所包括的监控代码,该目标程序是指集成有脚本虚拟机的程序。
其具体实现过程可以参考上述步骤101,在此不再赘述。
步骤202:通过监控代码的运行,获取运行该非PE脚本文件的过程中需要调用的所有自动化对象的分发接口的函数指针表,每个函数指针表包括对应自动化对象的分发接口的调用函数指针。
其具体实现过程可以参考上述步骤102中的步骤1021,在此不再赘述。
步骤203:将获取得到的每个函数指针表中的调用函数指针修改为自定义函数指针。
其具体实现过程可以参考上述步骤102中的步骤1022,在此不再赘述。
步骤204:对该目标程序运行该非PE脚本文件的过程进行监控。
其具体实现过程可以参考上述步骤102中的步骤1023,在此不再赘述。
步骤205:当每监控到自定义函数指针在运行该非PE脚本文件的过程中被调用时,获取调用该自定义函数指针时所使用的方法名和/或脚本参数。
其具体实现过程可以参考上述步骤102中的步骤1024,在此不再赘述。
步骤206:基于获取到的方法名和/或脚本参数,对该非PE脚本文件进行病毒检测。
其具体实现过程可以参考上述步骤103,在此不再赘述。
步骤207:若确定该非PE脚本文件是病毒文件,则结束运行该非PE脚本文件。
在另一实施例中,若确定该非PE脚本文件是病毒文件,还可以显示提醒信息,以提醒用户该非PE脚本文件是病毒文件。
步骤208:若确定该非PE脚本文件不是病毒文件,则基于获取到方法名和脚本参数调用对应的方法函数,以完成该非PE脚本文件的运行。
其具体实现过程可以参考上述图1A所示实施例中的相关描述,在此不再赘述。
本发明实施例中,可以在程序实际运行非PE脚本文件的过程中,通过预先注入的监控文件对调用自动化对象的分发接口的调用函数指针的行为进行监控,并获取所有调用函数指针被调用时所使用的方法名和/或脚本参数,由于非PE脚本文件的恶意行为往往通过在运行过程中调用自动化对象的分发接口的调用函数指针来实现,且调用时所使用的方法名和/或脚本参数能够真实反映恶意行为,因此通过获取到的方法名和/或脚本参数即能够确定该非PE脚本文件是否能够产生恶意行为,实现对非PE脚本文件的病毒检测。也即是,本申请可以在非PE脚本文件所使用的自动化COM组件架构的基础上,通过注入的监控文件实现对非PE脚本文件的动态病毒检测,因此也就无需为非PE脚本文件单独开发支持多种非PE脚本语言的脚本虚拟机,通过运行开发的脚本虚拟机对非PE脚本文件进行病毒检测,从而减小了脚本虚拟机的开发成本,提高了检测效率。
图3A是本发明实施例提供的一种脚本文件的检测装置的框图,该装置可以为终端,参见图3A,该装置包括:
运行模块301,用于执行上述图1A所述实施例中的步骤101;
获取模块302,用于执行上述图1A所述实施例中的步骤102;
检测模块303,用于执行上述图1A所述实施例中的步骤103。
可选地,参见图3B,所述获取模块302包括:
第一获取单元3021,用于执行上述图1A所述实施例中的步骤102中的步骤1021;
修改单元3022,用于执行上述图1A所述实施例中的步骤102中的步骤1022;
监控单元3023,用于执行上述图1A所述实施例中的步骤102中的步骤1023;
第二获取单元3024,用于执行上述图1A所述实施例中的步骤102中的步骤1024。
可选地,参见图3C,该装置还包括:
第一触发模块304,用于若确定该非PE脚本文件是病毒文件,则结束运行该非脚本文件,和/或,显示提醒信息,该提醒信息用于提醒该非PE脚本文件是病毒文件;
第二触发模块305,用于若确定该非PE脚本文件不是病毒文件,则基于获取到的方法名和脚本参数调用对应的方法函数,以完成该非PE脚本文件的运行。
可选地,参见图3D,该装置还包括:
注入模块306,用于当该目标程序启动时,将该监控文件注入到该目标程序的进程中。
本发明实施例中,可以在程序实际运行非PE脚本文件的过程中,通过预先注入的监控文件对调用自动化对象的分发接口的调用函数指针的行为进行监控,并获取所有调用函数指针被调用时所使用的方法名和/或脚本参数,由于非PE脚本文件的恶意行为往往通过在运行过程中调用自动化对象的分发接口的调用函数指针来实现,且调用时所使用的方法名和/或脚本参数能够真实反映恶意行为,因此通过获取到的方法名和/或脚本参数即能够确定该非PE脚本文件是否能够产生恶意行为,实现对非PE脚本文件的病毒检测。也即是,本申请可以在非PE脚本文件所使用的自动化COM组件架构的基础上,通过注入的监控文件实现对非PE脚本文件的动态病毒检测,因此也就无需为非PE脚本文件单独开发支持多种非PE脚本语言的脚本虚拟机,通过运行开发的脚本虚拟机对非PE脚本文件进行病毒检测,从而减小了脚本虚拟机的开发成本,提高了检测效率。
图4是本发明实施例提供的一种终端400的结构示意图。参见图4,参见图4,终端400可以包括通信单元410、包括有一个或一个以上计算机可读存储介质的存储器420、输入单元430、显示单元440、传感器450、音频电路460、WIFI(Wireless Fidelity,无线保真)模块470、包括有一个或者一个以上处理核心的处理器480、以及电源490等部件。本领域技术人员可以理解,图4中示出的终端结构并不构成对终端的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:
通信单元410可用于收发信息或通话过程中,信号的接收和发送,该通信单元410可以为RF(Radio Frequency,射频)电路、路由器、调制解调器、等网络通信设备。特别地,当通信单元410为RF电路时,将基站的下行信息接收后,交由一个或者一个以上处理器480处理;另外,将涉及上行的数据发送给基站。通常,作为通信单元的RF电路包括但不限于天线、至少一个放大器、调谐器、一个或多个振荡器、用户身份模块(SIM)卡、收发信机、耦合器、LNA(Low Noise Amplifier,低噪声放大器)、双工器等。此外,通信单元410还可以通过无线通信与网络和其他设备通信。所述无线通信可以使用任一通信标准或协议,包括但不限于GSM(Global System of Mobile communication,全球移动通讯***)、GPRS(GeneralPacket Radio Service,通用分组无线服务)、CDMA(Code Division Multiple Access,码分多址)、WCDMA(Wideband Code Division Multiple Access,宽带码分多址)、LTE(LongTerm Evolution,长期演进)、电子邮件、SMS(Short Messaging Service,短消息服务)等。存储器420可用于存储软件程序以及模块,处理器480通过运行存储在存储器420的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器420可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作***、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据终端400的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器420可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器420还可以包括存储器控制器,以提供处理器480和输入单元430对存储器420的访问。
输入单元430可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。优选地,输入单元430可包括触敏表面431以及其他输入设备432。触敏表面431,也称为触摸显示屏或者触控板,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触敏表面431上或在触敏表面431附近的操作),并根据预先设定的程式驱动相应的连接装置。可选的,触敏表面431可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器480,并能接收处理器480发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触敏表面431。除了触敏表面431,输入单元430还可以包括其他输入设备432。优选地,其他输入设备432可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。
显示单元440可用于显示由用户输入的信息或提供给用户的信息以及终端400的各种图形用户接口,这些图形用户接口可以由图形、文本、图标、视频和其任意组合来构成。显示单元440可包括显示面板441,可选的,可以采用LCD(Liquid Crystal Display,液晶显示器)、OLED(Organic Light-Emitting Diode,有机发光二极管)等形式来配置显示面板441。进一步的,触敏表面431可覆盖显示面板441,当触敏表面431检测到在其上或附近的触摸操作后,传送给处理器480以确定触摸事件的类型,随后处理器480根据触摸事件的类型在显示面板441上提供相应的视觉输出。虽然在图4中,触敏表面431与显示面板441是作为两个独立的部件来实现输入和输入功能,但是在某些实施例中,可以将触敏表面431与显示面板441集成而实现输入和输出功能。
终端400还可包括至少一种传感器450,比如光传感器、运动传感器以及其他传感器。光传感器可包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板441的亮度,接近传感器可在终端400移动到耳边时,关闭显示面板441和/或背光。作为运动传感器的一种,重力加速度传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别手机姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;至于终端400还可配置的陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。
音频电路460、扬声器461,传声器462可提供用户与终端400之间的音频接口。音频电路460可将接收到的音频数据转换后的电信号,传输到扬声器461,由扬声器461转换为声音信号输出;另一方面,传声器462将收集的声音信号转换为电信号,由音频电路460接收后转换为音频数据,再将音频数据输出处理器480处理后,经通信单元410以发送给比如另一终端,或者将音频数据输出至存储器420以便进一步处理。音频电路460还可能包括耳塞插孔,以提供外设耳机与终端400的通信。
为了实现无线通信,该终端上可以配置有无线通信单元470,该无线通信单元470可以为WIFI模块。WIFI属于短距离无线传输技术,终端400通过无线通信单元470可以帮助用户收发电子邮件、浏览网页和访问流式媒体等,它为用户提供了无线的宽带互联网访问。虽然图中示出了无线通信单元470,但是可以理解的是,其并不属于终端400的必须构成,完全可以根据需要在不改变发明的本质的范围内而省略。
处理器480是终端400的控制中心,利用各种接口和线路连接整个手机的各个部分,通过运行或执行存储在存储器420内的软件程序和/或模块,以及调用存储在存储器420内的数据,执行终端400的各种功能和处理数据,从而对手机进行整体监控。可选的,处理器480可包括一个或多个处理核心;优选的,处理器480可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作***、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器480中。
终端400还包括给各个部件供电的电源490(比如电池),优选的,电源可以通过电源管理***与处理器480逻辑相连,从而通过电源管理***实现管理充电、放电、以及功耗管理等功能。电源460还可以包括一个或一个以上的直流或交流电源、再充电***、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
尽管未示出,终端400还可以包括摄像头、蓝牙模块等,在此不再赘述。
在本实施例中,终端400还包括有至少一条指令、至少一段程序、代码集或指令集,这至少一条指令、至少一段程序、代码集或指令集存储于存储器中,且经配置以由一个或者一个以上处理器加载并执行以实现上述图1A实施例所述的脚本文件的病毒检测方法。
在另一实施例中,还提供一种计算机可读存储介质,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述指令、所述程序、所述代码集或所述指令集由处理器加载并执行以实现上述图1A实施例所述的脚本文件的病毒检测方法。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (12)

1.一种非可移植可执行PE脚本文件的病毒检测方法,其特征在于,所述方法包括:
在目标程序的运行过程中,运行预先在所述目标程序中注入的监控文件所包括的监控代码,对所述目标程序运行所述非PE脚本文件的过程进行监控;其中,所述目标程序是指集成有脚本虚拟机的程序;
通过所述监控代码的运行,监控所述目标程序运行所述非PE脚本文件的过程中调用自动化对象的分发接口的行为,获取至少一个调用函数指针被调用时所使用的方法名和/或脚本参数;其中,所述至少一个调用函数指针是指所述目标程序运行所述非PE脚本文件的过程中所调用的自动化对象的分发接口的调用函数指针,所述自动化对象是指集成有分发接口的组件对象模型COM对象;
在监控到所述分发接口的调用行为时,基于获取到的方法名和/或脚本参数,分析所述调用行为是否会对终端进行恶意修改,进而确定所运行的非PE脚本文件是否为病毒文件。
2.如权利要求1所述的方法,其特征在于,所述通过所述监控代码的运行,获取至少一个调用函数指针被调用时所使用的方法名和/或脚本参数,包括:
通过所述监控代码的运行,获取运行所述非PE脚本文件的过程中需要调用的所有自动化对象的分发接口的函数指针表,每个函数指针表包括对应自动化对象的分发接口的调用函数指针;
将获取得到的每个函数指针表中的调用函数指针修改为自定义函数指针;
对所述目标程序运行所述非PE脚本文件的过程进行监控;
当每监控到所述自定义函数指针在运行所述非PE脚本文件的过程中被调用时,获取调用所述自定义函数指针时所使用的方法名和/或脚本参数。
3.如权利要求1所述的方法,其特征在于,所述基于获取到的方法名和/或脚本参数,确定所运行的非PE脚本文件是否为病毒文件,包括:
确定获取到的方法名对应的操作行为,基于所述操作行为确定所述非PE脚本文件是否为病毒文件;或者,
将第一病毒特征库中的特征与获取到的脚本参数依次进行匹配,如果获取到的脚本参数中存在所述第一病毒特征库中的预设数目个特征,则确定所述非PE脚本文件为病毒文件,所述第一病毒特征库中的特征包括脚本参数特征;或者,
将第二病毒特征库中的特征与获取到的方法名和脚本参数组成的字符串依次进行匹配,如果组成的字符串中存在所述第二病毒特征库中的预设数目个特征,则确定所述非PE脚本文件为病毒文件,所述第二病毒特征库中的特征包括方法名特征和脚本参数特征。
4.如权利要求1所述的方法,其特征在于,所述基于获取到的方法名和/或脚本参数,确定所运行的非PE脚本文件是否为病毒文件之后,还包括:
若确定所述非PE脚本文件是病毒文件,则结束运行所述非PE脚本文件,和/或,显示提醒信息,所述提醒信息用于提醒所述非PE脚本文件是病毒文件;
若确定所述非PE脚本文件不是病毒文件,则基于获取到的方法名和脚本参数调用对应的方法函数,以完成所述非PE脚本文件的运行。
5.如权利要求1所述的方法,其特征在于,所述运行预先在所述目标程序中注入的监控文件所包括的监控代码之前,还包括:
当所述目标程序启动时,将所述监控文件注入到所述目标程序的进程中。
6.如权利要求1-5任一所述的方法,其特征在于,所述监控文件为动态链接库DLL文件。
7.一种非可移植可执行PE脚本文件的病毒检测装置,其特征在于,所述装置包括:
运行模块,用于在目标程序的运行过程中,运行预先在所述目标程序中注入的监控文件所包括的监控代码,对所述目标程序运行所述非PE脚本文件的过程进行监控;其中,所述目标程序是指集成有脚本虚拟机的程序;
获取模块,用于通过所述监控代码的运行,监控所述目标程序运行所述非PE脚本文件的过程中调用自动化对象的分发接口的行为,获取至少一个调用函数指针被调用时所使用的方法名和/或脚本参数;其中,所述至少一个调用函数指针是指所述目标程序运行所述非PE脚本文件的过程中所调用的自动化对象的分发接口的调用函数指针,所述自动化对象是指集成有分发接口的组件对象模型COM对象;
检测模块,用于在监控到所述分发接口的调用行为时,基于获取到的方法名和/或脚本参数,分析所述调用行为是否会对终端进行恶意修改,进而确定所运行的非PE脚本文件是否为病毒文件。
8.如权利要求7所述的装置,其特征在于,所述获取模块包括:
第一获取单元,用于通过所述监控代码的运行,获取运行所述非PE脚本文件的过程中需要调用的所有自动化对象的分发接口的函数指针表,每个函数指针表包括对应自动化对象的分发接口的调用函数指针;
修改单元,用于将获取得到的每个函数指针表中的调用函数指针修改为自定义函数指针;
监控单元,用于对所述目标程序运行所述非PE脚本文件的过程进行监控;
第二获取单元,用于当每监控到所述自定义函数指针在运行所述非PE脚本文件的过程中被调用时,获取调用所述自定义函数指针时所使用的方法名和/或脚本参数。
9.如权利要求7所述的装置,其特征在于,所述装置还包括:
第一触发模块,用于若确定所述非PE脚本文件是病毒文件,则结束运行所述非PE脚本文件,和/或,显示提醒信息,所述提醒信息用于提醒所述非PE脚本文件是病毒文件;
第二触发模块,用于若确定所述非PE脚本文件不是病毒文件,则基于获取到的方法名和脚本参数调用对应的方法函数,以完成所述非PE脚本文件的运行。
10.如权利要求7所述的装置,其特征在于,所述装置还包括:
注入模块,用于当所述目标程序启动时,将所述监控文件注入到所述目标程序的进程中。
11.一种终端,其特征在于,所述终端包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述指令、所述程序、所述代码集或所述指令集由所述处理器加载并执行以实现如权利要求1-6任一项所述的脚本文件的病毒检测方法。
12.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有至少一条计算机程序,所述计算机程序由处理器加载并执行以实现如权利要求1-6任一项所述的非可移植可执行PE脚本文件的病毒检测方法。
CN201710465968.5A 2017-06-19 2017-06-19 脚本文件的病毒检测方法、装置、终端及存储介质 Active CN109145598B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710465968.5A CN109145598B (zh) 2017-06-19 2017-06-19 脚本文件的病毒检测方法、装置、终端及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710465968.5A CN109145598B (zh) 2017-06-19 2017-06-19 脚本文件的病毒检测方法、装置、终端及存储介质

Publications (2)

Publication Number Publication Date
CN109145598A CN109145598A (zh) 2019-01-04
CN109145598B true CN109145598B (zh) 2021-01-22

Family

ID=64804443

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710465968.5A Active CN109145598B (zh) 2017-06-19 2017-06-19 脚本文件的病毒检测方法、装置、终端及存储介质

Country Status (1)

Country Link
CN (1) CN109145598B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114036517A (zh) * 2021-11-02 2022-02-11 安天科技集团股份有限公司 一种病毒识别方法、装置、电子设备及存储介质
CN114816558B (zh) * 2022-03-07 2023-06-30 深圳市九州安域科技有限公司 一种脚本注入方法、设备及计算机可读存储介质
CN114611105A (zh) * 2022-03-10 2022-06-10 北京中睿天下信息技术有限公司 一种有害脚本识别方法、装置、设备及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101667230A (zh) * 2008-09-02 2010-03-10 北京瑞星国际软件有限公司 一种监控脚本执行的方法和装置
CN104331663A (zh) * 2014-10-31 2015-02-04 北京奇虎科技有限公司 web shell的检测方法以及web服务器
CN104462985A (zh) * 2014-11-28 2015-03-25 北京奇虎科技有限公司 bat漏洞的检测方法以及装置
CN105550584A (zh) * 2015-12-31 2016-05-04 北京工业大学 一种Android平台下基于RBAC的恶意程序拦截及处置方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101667230A (zh) * 2008-09-02 2010-03-10 北京瑞星国际软件有限公司 一种监控脚本执行的方法和装置
CN104331663A (zh) * 2014-10-31 2015-02-04 北京奇虎科技有限公司 web shell的检测方法以及web服务器
CN104462985A (zh) * 2014-11-28 2015-03-25 北京奇虎科技有限公司 bat漏洞的检测方法以及装置
CN105550584A (zh) * 2015-12-31 2016-05-04 北京工业大学 一种Android平台下基于RBAC的恶意程序拦截及处置方法

Also Published As

Publication number Publication date
CN109145598A (zh) 2019-01-04

Similar Documents

Publication Publication Date Title
US9800609B2 (en) Method, device and system for detecting malware in a mobile terminal
CN107038112B (zh) 应用界面的调试方法及装置
CN106970790B (zh) 一种应用程序创建的方法、相关设备及***
US10186244B2 (en) Sound effect processing method and device, plug-in unit manager and sound effect plug-in unit
CN106598584B (zh) 一种处理资源文件的方法、装置和***
CN109857403B (zh) 一种页面更新、页面处理方法及装置
CN106502703B (zh) 一种函数调用方法和装置
US9584476B2 (en) Safety protection method, firewall, terminal device and computer-readable storage medium
CN106713608B (zh) 应用的功能状态修改方法、装置及终端
CN108595218B (zh) 一种加载***动态库的方法和装置
CN104965722B (zh) 一种显示信息的方法及装置
US11063962B2 (en) Malicious URL detection method and apparatus, terminal, and computer storage medium
CN107622200A (zh) 应用程序的安全性检测方法及装置
CN109240902B (zh) 一种获取电子设备的固件代码的方法和装置
CN111723002A (zh) 一种代码调试方法、装置、电子设备及存储介质
EP2869604B1 (en) Method, apparatus and device for processing a mobile terminal resource
CN108090345B (zh) linux***外部命令执行方法及装置
CN108920220B (zh) 一种函数调用的方法、装置及终端
CN109145598B (zh) 脚本文件的病毒检测方法、装置、终端及存储介质
WO2018058436A1 (zh) 一种加载软件程序的方法、用户终端及存储介质
CN107015866B (zh) 一种数据处理方法及装置
CN106919458B (zh) Hook目标内核函数的方法及装置
CN106708555B (zh) 一种加载插件的方法和装置
CN108664389B (zh) 一种测试方法、装置及终端
CN105278942B (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