首页> 中国专利> 脚本代码的解混淆方法、装置、脚本解释器及存储介质

脚本代码的解混淆方法、装置、脚本解释器及存储介质

摘要

本申请公开一种脚本代码的解混淆方法、装置、脚本解释器及存储介质,应用于脚本解释器,该方法包括:若确定出脚本代码存在函数调用,确定脚本代码中调用的函数是否为高危函数;若确定出脚本代码中调用的函数为高危函数,则在函数调用之前插入拦截函数;调用拦截函数,获取高危函数的第一调用参数。如此,确定出脚本代码中调用的函数为高危函数时,在函数调用之前插入动态拦截函数,调用拦截函数获取该函数的第一调用参数,根据第一调用参数确定脚本解释器是否执行对该函数的调用功能,进而达到对网络和主机的保护。

著录项

  • 公开/公告号CN115238266A

    专利类型发明专利

  • 公开/公告日2022-10-25

    原文格式PDF

  • 申请/专利权人 深信服科技股份有限公司;

    申请/专利号CN202110437156.6

  • 发明设计人 闫华;位凯志;古亮;

    申请日2021-04-22

  • 分类号G06F21/56(2013.01);G06F8/41(2018.01);

  • 代理机构北京派特恩知识产权代理有限公司 11270;北京派特恩知识产权代理有限公司 11270;

  • 代理人胡亮;张颖玲

  • 地址 518055 广东省深圳市南山区学苑大道1001号南山智园A1栋

  • 入库时间 2023-06-19 17:25:42

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2022-11-11

    实质审查的生效 IPC(主分类):G06F21/56 专利申请号:2021104371566 申请日:20210422

    实质审查的生效

说明书

技术领域

本申请涉及通信安全技术,尤其涉及一种脚本代码的解混淆方法、装置、脚本解释器及存储介质。

背景技术

JavaScript是互联网时代广泛使用的脚本语言。网络上存在大量JavaScript脚本代码,为用户日常访问网站提供很大便利。在此背景下,恶意JavaScript脚本代码混杂在大量正常程序中,对网络和主机造成侵害。

混淆技术作为一种成熟技术,常被JavaScript恶意脚本代码用于绕过反病毒系统。同时,正常JavaScript脚本代码出于保护知识产权或增加网络传输速度的目的,也使用混淆技术对正常JavaScript脚本代码进行混淆。为了准确区分混淆后的正常JavaScript脚本代码和恶意JavaScript脚本代码,必须对混淆JavaScript脚本代码做解混淆。

目前有一种JavaScript脚本代码的解混淆方法,预先模拟JavaScript脚本代码的运行,对每条JavaScript脚本代码按照脚本代码的控制流做模拟,这样使得只有部分混淆JavaScript脚本代码可以进行解混淆过程,得到解混淆结果。然而,对于没有经过模拟运行操作或者增加了复杂指令的恶意JavaScript脚本代码,存在不能进行解混淆的情况,导致对网络和主机造成侵害。

发明内容

为解决上述技术问题,本申请提供一种脚本代码的解混淆方法、装置、脚本解释器及存储介质。

本申请的技术方案是这样实现的:

第一方面,提供了一种脚本代码的解混淆方法,应用于脚本解释器,该方法包括:

若确定出脚本代码存在函数调用,确定所述脚本代码中调用的函数是否为高危函数;

若确定出所述脚本代码中调用的函数为高危函数,则在所述函数调用之前插入拦截函数;

调用所述拦截函数,获取所述高危函数的第一调用参数。

上述方案中,所述调用所述拦截函数,获取所述高危函数的第一调用参数,包括:所述拦截函数为打印函数,打印出所述高危函数的第一调用参数。

上述方案中,所述方法还包括:在语法分析器中预先定位函数调用的语法规则;所述确定出脚本代码存在函数调用,包括:基于所述语法分析器对所述脚本代码进行语法分析,得到语法分析结果;若所述语法分析结果指示所述脚本代码包括函数调用的语法规则,则确定所述脚本代码存在函数调用。

上述方案中,所述确定所述脚本代码中调用的函数是否为高危函数,包括:查询高危函数列表,判断所述高危函数列表中是否包括所述脚本代码中调用的函数;若包括,确定所述脚本代码中调用的函数为高危函数。

上述方案中,所述方法还包括:若不包括,确定所述脚本代码中调用的函数为正常函数,对所述脚本代码进行正常调用。

上述方案中,所述方法还包括:将所述第一调用参数发送至反病毒引擎,以使得所述反病毒引擎对所述第一调用参数进行病毒检测得到检测结果。

上述方案中,所述方法还包括:获取所述检测结果;基于所述检测结果,确定所述混淆脚本代码为恶意脚本代码时,将对应的告警信息显示在所述代码编辑器的显示界面。

第二方面,提供了一种脚本代码的解混淆装置,应用于脚本解释器,该装置包括:

确定单元,用于若确定出脚本代码存在函数调用,确定所述脚本代码中调用的函数是否为高危函数;

插入单元,用于若确定出所述函数为高危函数,则在所述函数调用之前插入拦截函数;

获取单元,用于调用所述拦截函数,获取所述高危函数的第一调用参数。

第三方面,提供了一种脚本解释器,包括:处理器和配置为存储能够在处理器上运行的计算机程序的存储器,其中,所述处理器配置为运行所述计算机程序时,执行前述方法的步骤。

第四方面,提供了一种计算机可读存储介质,其上存储有计算机程序,其中,该计算机程序被处理器执行时实现前述方法的步骤。

本申请提供一种脚本代码的解混淆方法,应用于脚本解释器,该方法包括:若确定出脚本代码存在函数调用,确定所述脚本代码中调用的函数是否为高危函数;若确定出所述脚本代码中调用的函数为高危函数,则在所述函数调用之前插入拦截函数;调用所述拦截函数,获取所述高危函数的第一调用参数。如此,确定出脚本代码中调用的函数为高危函数时,在函数调用之前插入动态拦截函数,调用拦截函数获取该函数的第一调用参数,根据第一调用参数确定脚本解释器是否执行对该函数的调用功能,进而达到对网络和主机的保护。

附图说明

图1为本申请实施例中脚本代码的解混淆方法的第一流程示意图;

图2为本申请实施例中脚本代码的解混淆方法的第二流程示意图;

图3为本申请实施例中脚本解释器组成的第一结构示意图;

图4为本申请实施例中脚本代码的解混淆方法的第三流程示意图;

图5为本申请实施例中脚本代码的解混淆装置组成的结构示意图;

图6为本申请实施例中脚本解释器的组成第二结构示意图。

具体实施方式

为了能够更加详尽地了解本申请实施例的特点与技术内容,下面结合附图对本申请实施例的实现进行详细阐述,所附附图仅供参考说明之用,并非用来限定本申请实施例。

实施例一

本申请实施例提供了一种脚本代码的解混淆方法,应用于脚本解释器,脚本解释器由词法分析器、语法分析器和语义分析器组成。本申请中脚本解释器与现有脚本解释器的区别在于,本申请的脚本解释器在语法分析器中定位对混淆函数调用的语法规则,在语义分析器中插入对高危函数调用的拦截函数,故本申请的脚本解释器可称为插桩后的解释器。

图1为本申请实施例中脚本代码的解混淆方法的第一流程示意图,如图1所示,脚本代码的解混淆方法具体可以包括:

步骤101:若确定出脚本代码存在函数调用,确定所述脚本代码中调用的函数是否为高危函数;

需要说明的是,高危函数为计算机病毒分析专家给出的对脚本代码进行恶意混淆时常用的函数。

这里,若确定脚本代码存在函数调用且调用的函数为高危函数,说明该脚本代码可能为恶意混淆脚本代码,即进行解混淆操作时可能对网络和主机造成侵害。若确定脚本代码存在函数调用且调用的函数为非高危函数,说明该脚本代码不是恶意混淆脚本代码,也就不需要担心解混淆操作时可能对网络和主机造成侵害。

也就是说,该步骤主要是通过确定脚本代码中调用的函数是否为高危函数,来确定脚本代码的解混淆操作时是否可能对网络和主机造成侵害。

这里,脚本代码可以是JavaScript脚本代码。

在一些实施例中,所述方法还包括:在语法分析器中预先定位函数调用的语法规则;所述确定出脚本代码存在函数调用,包括:基于所述语法分析器对所述脚本代码进行语法分析,得到语法分析结果;若所述语法分析结果指示所述脚本代码包括函数调用的语法规则,则确定所述脚本代码存在函数调用。

需要说明的是,本申请中确定脚本代码是否存在函数调用之前,在语法分析器中预先定位对函数调用的语法规则,便于后续对脚本代码进行语法分析时,根据语法分析结果可确定出当前脚本代码中是否存在函数调用。即若语法分析结果指示脚本代码包括函数调用的语法规则,则确定脚本代码存在函数调用;若语法分析结果未指示脚本代码包括函数调用的语法规则,则确定脚本代码不存在函数调用。

这里,由于语法分析器的输入为脚本代码的单词序列,故通常利用语法分析器进行语法分析之前,利用词法分析器对每个脚本代码进行词法分析,得到每个脚本代码对应的单词序列。

上述提及的词法分析器和语法分析器可以是由开发者手动编写,也可以是由开发工具自动生成。

实际应用中,先利用词法分析器对每个脚本代码进行词法分析,得到每个脚本代码对应的单词序列,再利用已定位对函数调用的语法规则的语法分析器,对单词序列构成的脚本代码进行语法分析,从而根据语法分析结果确定出与语法规则相匹配的函数调用。

步骤102:若确定所述脚本代码中调用的函数为高危函数,则在所述函数调用之前插入拦截函数;

这里,若脚本代码中调用的函数为高危函数,并非说该脚本代码就一定为恶意混淆脚本代码,还存在为正常混淆脚本代码的可能,具体需要借助反病毒引擎进行判断,在下面再进行具体阐述。若脚本代码中调用的函数为非高危函数,也就不需要在函数调用之前插入拦截函数。

需要说明的是,拦截函数用于拦截脚本解释器直接对高危函数的调用。具体的,利用脚本解释器中语义分析器对每个脚本代码进行语义分析,分析出脚本代码中调用的函数为高危函数时,在函数调用之前插入拦截函数,以拦截脚本解释器对函数的直接调用。

在一些实施例中,该步骤具体包括:查询高危函数列表,判断所述高危函数列表中是否包括所述脚本代码中调用的函数;若包括,确定所述脚本代码中调用的函数为高危函数。

在一些实施例中,所述方法还包括:若不包括,确定所述脚本代码中调用的函数为正常函数,对所述脚本代码进行正常调用。

需要说明的是,高危函数列表是由计算机病毒分析专家给出的脚本代码进行恶意混淆时常用的高危函数所组成的列表。高危函数列表包括但不限于eval、setTimeout和setInterval。

实际应用中,步骤102是利用脚本解释器的语义分析器实现,具体的,将脚本代码中调用的函数依次与高危函数列表中高危函数进行比对,若存在与该函数相同的高危函数,确定该函数为高危函数,故在对脚本代码中的函数进行调用之前需插入拦截函数,拦截语义分析器直接对该函数的调用;若不存在与该函数相同的高危函数,确定该函数为非高危函数,故可对脚本代码中的函数进行正常调用。

步骤103:调用所述拦截函数,获取所述高危函数的第一调用参数。

这里,为避免直接对高危函数进行调用可能对网站和主机造成侵害的情况,故调用插入高危函数之前的拦截函数,来获取高危函数的第一调用参数,后续可对第一调用参数进行病毒检测,以此确定第一调用参数中是否存在病毒,进而避免对网站和主机造成侵害的情况发生。

实际应用中,步骤103是在脚本解释器中语义分析器实现对拦截函数的调用功能。这里,语义分析器可以是由开发者手动编写,也可以是由开发工具自动生成。

示例性地,高危函数为“eval(a)”,本申请利用脚本解释器中语义分析器实现对高危函数“eval(a)”调用功能之前动态插入拦截函数,并调用拦截函数,以获取a的值(即第一调用参数)。

在一些实施例中,所述方法还包括:将所述第一调用参数发送至反病毒引擎,以使得所述反病毒引擎对所述第一调用参数进行病毒检测得到检测结果。

这里,具体是将第一调用参数作为反病毒引擎的输入,反病毒引擎对第一调用参数进行病毒检测,输出第一调用参数对应的检测结果。其中,检测结果包括两种可能,即脚本代码为正常混淆脚本代码或者恶意混淆脚本代码。本申请这种仅对高危函数进行检测病毒的方式,并非对每个脚本代码中调用的函数都进行病毒检测,使得提高反病毒引擎对混淆脚本代码的检测率。

上述提及的正常混淆脚本代码指的是对正常脚本代码出于保护知识产权或增加网络传输速度的目的,故对正常脚本代码进行混淆操作。恶意混淆脚本代码指的是恶意脚本代码为绕过反病毒引擎,故对恶意脚本代码进行混淆操作。

在一些实施例中,所述方法还包括:获取所述检测结果;基于所述检测结果,确定所述脚本代码为恶意脚本代码时,将对应的告警信息显示在代码编辑器的显示界面。

这里,若检测结果显示脚本代码为恶意脚本代码时,在代码编辑器的显示界面显示如“脚本代码为恶意脚本代码,请确认是否启动杀毒工具进行查杀”的告警信息,该告警信息用于提示用户脚本代码为恶意脚本代码,如不启动杀毒工具进行查杀,会造成对网络和主机的侵害。若检测结果显示脚本代码为正常脚本代码时,可以在代码编辑器的显示界面显示如“脚本代码为正常脚本代码,可调用”的提示信息,也可以不显示直接利用脚本解释器直接进行函数的调用。

在一些实施例中,若所述检测结果显示所述脚本代码为恶意脚本代码,所述第一调用参数中包括以下至少一项:敏感应用程序接口(Application ProgrammingInterface,API)调用、恶意统一资源定位系统(Uniform Resource Locator,URL)访问、恶意互联网协议(Internet Protocal,IP)地址访问、恶意字符串。

也就是说,第一调用参数中暴露出解混淆前在脚本代码中被隐藏的敏感API调用、恶意URL或IP访问、恶意字符串等。

这里,步骤101至步骤103的执行主体可以为脚本解释器的处理器。

采用上述技术方案,确定出脚本代码中调用的函数为高危函数时,在函数调用之前插入动态拦截函数,调用拦截函数获取该函数的第一调用参数,根据第一调用参数确定脚本解释器是否执行对该函数的调用功能,进而达到对网络和主机的保护。

实施例二

在上述实施例的基础上对脚本代码的解混淆方法进行进一步的举例说明,本申请实施例还提供了一种脚本代码的解混淆方法,应用于脚本解释器,本申请的脚本解释器可复用已有的解释器(包括JavaScript解释器),例如谷歌的V8和火狐的SpiderMonkey,在此基础上做二次开发,具体是在脚本解释器的语法分析器中定位对混淆函数调用的语法规则,及在语义分析器中插入对高危函数调用的拦截函数,故本申请的脚本解释器可称为插桩后的解释器。

图2为本申请实施例中脚本代码的解混淆方法的第二流程示意图,如图2所示,具体可以包括:

步骤201:若确定出脚本代码存在函数调用,确定所述脚本代码中调用的函数是否为高危函数;

需要说明的是,高危函数为计算机病毒分析专家给出的对脚本代码进行恶意混淆时常用的函数。

这里,若确定脚本代码存在函数调用且调用的函数为高危函数,说明该脚本代码可能为恶意混淆脚本代码,即进行解混淆操作时可能对网络和主机造成侵害。若确定脚本代码存在函数调用且调用的函数为非高危函数,说明该脚本代码不是恶意混淆脚本代码,也就不需要担心解混淆操作时可能对网络和主机造成侵害。

也就是说,该步骤主要是通过确定脚本代码中调用的函数是否为高危函数,来确定脚本代码的解混淆操作时是否可能对网络和主机造成侵害。

这里,脚本代码可以是JavaScript脚本代码。

在一些实施例中,所述方法还包括:在语法分析器中预先定位函数调用的语法规则;所述确定出脚本代码存在函数调用,包括:基于所述语法分析器对所述脚本代码进行语法分析,得到语法分析结果;若所述语法分析结果指示所述脚本代码包括函数调用的语法规则,则确定所述脚本代码存在函数调用。

需要说明的是,本申请中确定脚本代码是否存在函数调用之前,在语法分析器中预先定位对函数调用的语法规则,便于后续对脚本代码进行语法分析时,根据语法分析结果可确定出当前脚本代码中是否存在函数调用。即若语法分析结果指示脚本代码包括函数调用的语法规则,则确定脚本代码存在函数调用;若语法分析结果未指示脚本代码包括函数调用的语法规则,则确定脚本代码不存在函数调用。

这里,由于语法分析器的输入为脚本代码的单词序列,故通常利用语法分析器进行语法分析之前,利用词法分析器对每个脚本代码进行词法分析,得到每个脚本代码对应的单词序列。

上述提及的词法分析器和语法分析器可以是由开发者手动编写,也可以是由开发工具自动生成。

实际应用中,先利用词法分析器对每个脚本代码进行词法分析,得到每个脚本代码对应的单词序列,再利用已定位对函数调用的语法规则的语法分析器,对单词序列构成的脚本代码进行语法分析,从而根据语法分析结果确定出与语法规则相匹配的函数调用。

步骤202:若确定所述脚本代码中调用的函数为高危函数,则在所述函数调用之前插入拦截函数;

这里,若脚本代码中调用的函数为高危函数,并非说该脚本代码就一定为恶意混淆脚本代码,还存在为正常混淆脚本代码的可能,具体需要借助反病毒引擎进行判断,在下面再进行具体阐述。若脚本代码中调用的函数为非高危函数,也就不需要在函数调用之前插入拦截函数。

需要说明的是,拦截函数用于拦截脚本解释器直接对高危函数的调用。具体的,利用脚本解释器中语义分析器对每个脚本代码进行语义分析,分析出脚本代码中调用的函数为高危函数时,在函数调用之前插入拦截函数,以拦截脚本解释器对函数的直接调用。

在一些实施例中,该步骤具体包括:查询高危函数列表,判断所述高危函数列表中是否包括所述脚本代码中调用的函数;若包括,确定所述脚本代码中调用的函数为高危函数。

在一些实施例中,所述方法还包括:若不包括,确定所述脚本代码中调用的函数为正常函数,对所述脚本代码进行正常调用。

需要说明的是,高危函数列表是由计算机病毒分析专家给出的脚本代码进行恶意混淆时常用的高危函数所组成的列表。高危函数列表包括但不限于eval、setTimeout和setInterval。

实际应用中,步骤202是利用脚本解释器的语义分析器实现,具体的,将脚本代码中调用的函数依次与高危函数列表中高危函数进行比对,若存在与该函数相同的高危函数,确定该函数为高危函数,故在对脚本代码中的函数进行调用之前需插入拦截函数,拦截语义分析器直接对该函数的调用;若不存在与该函数相同的高危函数,确定该函数为非高危函数,故可对脚本代码中的函数进行正常调用。

步骤203:所述拦截函数为打印函数,打印出所述高危函数的第一调用参数。

实际应用中,拦截函数为打印函数,用于打印出高危函数的第一调用参数。示例性地,拦截函数可以是log()、print()。

这里,打印过程即为解混淆过程。

实际应用中,步骤203利用脚本解释器中语义分析器实现对拦截函数的调用功能。这里,语义分析器可以是由开发者手动编写,也可以是由开发工具自动生成。

示例性地,脚本代码为“eval(a)”,其中,eval(a)为带参数的高危函数,本申请利用语义分析器实现对高危函数“eval(a)”进行调用功能之前,于该高危函数之前动态插入拦截函数,调用拦截函数,拦截函数打印出a的值(即第一调用参数)。

在一些实施例中,所述方法还包括:将所述第一调用参数发送至反病毒引擎,以使得所述反病毒引擎对所述第一调用参数进行病毒检测得到检测结果。

这里,具体是将第一调用参数作为反病毒引擎的输入,反病毒引擎对第一调用参数进行病毒检测,输出第一调用参数对应的检测结果。其中,检测结果包括两种可能,即脚本代码为正常混淆脚本代码或者恶意混淆脚本代码。本申请这种仅对高危函数进行检测病毒的方式,并非对每个脚本代码中调用的函数都进行病毒检测,使得提高反病毒引擎对混淆脚本代码的检测率。

上述提及的正常混淆脚本代码指的是对正常脚本代码出于保护知识产权或增加网络传输速度的目的,故对正常脚本代码进行混淆操作。恶意混淆脚本代码指的是恶意脚本代码为绕过反病毒引擎,故对恶意脚本代码进行混淆操作。

在一些实施例中,所述方法还包括:获取所述检测结果;基于所述检测结果,确定所述脚本代码为恶意脚本代码时,将对应的告警信息显示在代码编辑器的显示界面。

这里,若检测结果显示脚本代码为恶意脚本代码时,在代码编辑器的显示界面显示如“脚本代码为恶意脚本代码,请确认是否启动杀毒工具进行查杀”的告警信息,该告警信息用于提示用户脚本代码为恶意脚本代码,如不启动杀毒工具进行查杀,会造成对网络和主机的侵害。若检测结果显示脚本代码为正常脚本代码时,可以在代码编辑器的显示界面显示如“脚本代码为正常脚本代码,可调用”的提示信息,也可以不显示直接利用脚本解释器直接进行函数的调用。

在一些实施例中,若所述检测结果显示所述脚本代码为恶意脚本代码,所述第一调用参数中包括以下至少一项:敏感应用程序接口(Application ProgrammingInterface,API)调用、恶意统一资源定位系统(Uniform Resource Locator,URL)访问、恶意互联网协议(Internet Protocal,IP)地址访问、恶意字符串。

也就是说,第一调用参数中暴露出解混淆前在脚本代码中被隐藏的敏感API调用、恶意URL或IP访问、恶意字符串等。

采用上述技术方案,确定出脚本代码中调用的函数为高危函数时,在函数调用之前插入动态拦截函数,调用拦截函数获取该函数的第一调用参数,根据第一调用参数确定脚本解释器是否执行对该函数的调用功能,进而达到对网络和主机的保护。

实施例三

基于上述实施例,本申请给出一种脚本解释器的结构图,图3为本申请实施例中脚本解释器组成的第一结构示意图。

如图3所示,插桩后的脚本解释器307由词法分析器301、语法分析器302和语义分析器303组成。词法分析器301、语法分析器302和语义分析器303三者可以是由开发者手动编写,也可以是由开发工具自动生成。

对于本申请的插桩后的脚本解释器307,是因为在现有的脚本解释器的基础上,在语法分析器302中定位对函数调用的语法规则304;在语义分析器303中插入对高危函数调用的拦截函数306及高危函数列表305;词法分析器301未作修改。故称为插桩后的脚本解释器307。

具体的,利用词法分析器301对输入脚本解释器的每个脚本代码进行词法分析,得到每个脚本代码对应的单词序列。

再利用已定位对函数调用的语法规则304的语法分析器302,对单词序列构成的脚本代码进行语法分析,从而根据语法分析结果确定出与语法规则相匹配的函数调用。

再基于语义分析器303进行分析时,基于高危函数列表305判断调用的函数是否为高危函数,若高危函数列表305中包括调用的函数,即确定调用的函数为高危函数,在语义分析器中实现对函数的调用之前,于该函数之前插入拦截函数306,通过调用拦截函数将该函数的第一调用参数打印出来。若高危函数列表305中不包括调用的函数,即确定调用的函数为非高危函数,可直接对该函数进行调用。

这里,利用插桩后的脚本解释器307对语法1的语义、语法2的语义、语法3的语义…语法X的语义…语法N的语义依次进行分析时,若语法X的语义中包括函数调用语句,进而判断调用的函数是否为高危函数,具体是将调用的函数依次与高危函数列表中高危函数进行比对,若存在与该函数相同的高危函数,确定该函数为高危函数,故在函数调用之前动态插入拦截函数,通过调用拦截函数以打印出函数的调用参数。

上述提及的脚本代码可以是混淆JavaScript脚本代码,为此提出另一种脚本代码的解混淆方法,图4为本申请实施例中脚本代码的解混淆方法的第三流程示意图,如图4所示,将混淆JavaScript脚本代码308作为插桩后的脚本解释器307的输入,输出得到解混淆结果309。

采用上述技术方案,确定出脚本代码中调用的函数为高危函数时,在函数调用之前插入动态拦截函数,调用拦截函数获取该函数的第一调用参数,根据第一调用参数确定脚本解释器是否执行对该函数的调用功能,进而达到对网络和主机的保护。

实施例四

为实现本申请实施例的方法,基于同一发明构思,本申请实施例中还提供了一种脚本代码的解混淆装置,图5为本申请实施例中脚本代码的解混淆装置组成的结构示意图。

如图5所示,该脚本代码的解混淆装置应用于脚本解释器,具体可以包括:

确定单元501,用于若确定出脚本代码存在函数调用,确定所述脚本代码中调用的函数是否为高危函数;

插入单元502,用于若确定出所述脚本代码中调用的函数为高危函数,则在所述函数调用之前插入拦截函数;

获取单元503,用于调用所述拦截函数,获取所述高危函数的第一调用参数。

在一些实施例中,所述装置包括:获取单元503,具体用于所述拦截函数为打印函数,打印出所述高危函数的第一调用参数。

在一些实施例中,所述方法还包括:在语法分析器中预先定位函数调用的语法规则;所述装置包括:确定单元501,具体用于基于所述语法分析器对所述脚本代码进行语法分析,得到语法分析结果;若所述语法分析结果指示所述脚本代码包括函数调用的语法规则,则确定所述脚本代码存在函数调用。

在一些实施例中,所述装置包括:插入单元502,具体用于查询高危函数列表,判断所述高危函数列表中是否包括所述脚本代码中调用的函数;若包括,确定所述脚本代码中调用的函数为高危函数。

在一些实施例中,所述方法还包括:若不包括,确定所述脚本代码中调用的函数为正常函数,对所述脚本代码进行正常调用。

在一些实施例中,所述方法还包括:将所述第一调用参数发送至反病毒引擎,以使得所述反病毒引擎对所述第一调用参数进行病毒检测得到检测结果。

在一些实施例中,所述方法还包括:获取所述检测结果;基于所述检测结果,确定所述脚本代码为恶意脚本代码时,将对应的告警信息显示在代码编辑器的显示界面。

采用上述技术方案,确定出脚本代码中调用的函数为高危函数时,在函数调用之前插入动态拦截函数,调用拦截函数获取该函数的第一调用参数,根据第一调用参数确定脚本解释器是否执行对该函数的调用功能,进而达到对网络和主机的保护。

本申请实施例还提供了一种脚本解释器,图6为本申请实施例中脚本解释器组成的第二结构示意图。

如图6所示,该脚本解释器包括:处理器601和配置为存储能够在处理器上运行的计算机程序的存储器602;

其中,处理器601配置为运行计算机程序时,执行前述实施例中的方法步骤。

当然,实际应用时,如图6所示,该脚本解释器中的各个组件通过总线系统603耦合在一起。可理解,总线系统603用于实现这些组件之间的连接通信。总线系统603除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图6中将各种总线都标为总线系统603。

在实际应用中,上述处理器可以为特定用途集成电路(ASIC,ApplicationSpecific Integrated Circuit)、数字信号处理装置(DSPD,Digital Signal ProcessingDevice)、可编程逻辑装置(PLD,Programmable Logic Device)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)、控制器、微控制器、微处理器中的至少一种。可以理解地,对于不同的设备,用于实现上述处理器功能的电子器件还可以为其它,本申请实施例不作具体限定。

上述存储器可以是易失性存储器(volatile memory),例如随机存取存储器(RAM,Random-Access Memory);或者非易失性存储器(non-volatile memory),例如只读存储器(ROM,Read-Only Memory),快闪存储器(flash memory),硬盘(HDD,Hard Disk Drive)或固态硬盘(SSD,Solid-State Drive);或者上述种类的存储器的组合,并向处理器提供指令和数据。

在示例性实施例中,本申请实施例还提供了一种计算机可读存储介质,用于存储计算机程序。

可选的,该计算机可读存储介质可应用于本申请实施例中的任意一种方法,并且该计算机程序使得计算机执行本申请实施例的各个方法中由处理器实现的相应流程,为了简洁,在此不再赘述。

在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。

上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元,即可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。

另外,在本发明各实施例中的各功能单元可以全部集成在一个处理模块中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。

本申请所提供的几个方法实施例中所揭露的方法,在不冲突的情况下可以任意组合,得到新的方法实施例。

本申请所提供的几个产品实施例中所揭露的特征,在不冲突的情况下可以任意组合,得到新的产品实施例。

本申请所提供的几个方法或设备实施例中所揭露的特征,在不冲突的情况下可以任意组合,得到新的方法实施例或设备实施例。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号