一种插件热加载方法、系统、终端设备及存储介质与流程

文档序号:29856184发布日期:2022-04-30 09:25阅读:131来源:国知局
一种插件热加载方法、系统、终端设备及存储介质与流程

1.本技术涉及插件应用领域,尤其是涉及一种插件热加载与执行方法及系统。


背景技术:

2.插件是一种遵循一定规范的应用程序接口编写出来的程序。
3.现有产品处理用户数据的实现方式大部分是根据需求预先写好插件,然后再把获取的用户数据交给预设的插件进行处理,但是预设的插件对用户数据的处理功能往往过于单一,且根据对用户数据处理功能的需求不同需要多次安装插件,从而降低了插件对用户数据的处理效率。


技术实现要素:

4.为了提升插件对用户数据的处理效率,本技术提供一种插件热加载与执行方法及系统。
5.第一方面,本技术提供一种插件热加载方法,采用如下的技术方案:一种插件热加载方法,包括以下步骤:暂停服务端通信,获取客户端的用户数据,将所述用户数据存入数据库;根据所述用户数据选择插件,并确定用户数据类型;根据所述用户数据类型构建插件信息,并根据所述插件信息加载插件;根据所述插件对所述用户数据进行处理,并输出处理结果。
6.通过采用上述技术方案,获取用户数据,根据需求确认用户数据的类型,构建对应的插件信息,根据所述插件信息加载插件,插件根据所述插件信息对用户数据的进行处理并输出处理结果,从而提升了插件对用户数据的处理效率。
7.可选的,所述根据所述用户数据类型构建插件信息,并根据所述插件信息加载插件包括以下步骤:根据所述用户数据类型确定所述插件信息,所述插件信息包括插件代码;将所述插件信息输入至语言引擎中,所述语言引擎是指插件中的语言编译程序;加载输入插件信息后的所述语言引擎。
8.可选的,根据所述插件信息调用函数库中的函数表,所述函数库由所述函数表组成,所述函数库由所述插件定义,并内置于所述插件中;根据所述函数表对所述用户数据进行分析;输出分析结果。
9.可选的,所述函数表包括分析函数,所述根据所述函数库对所述用户数据进行分析包括以下步骤:根据所述函数表调用所述分析函数;执行所述分析函数对所述用户数据进行分析。
10.可选的,所述根据所述插件对所述用户数据进行处理,并输出处理结果包括以下
步骤:根据所述插件信息调用函数库中的函数表,所述函数库由所述函数表组成,所述函数库由所述插件定义,并内置于所述插件中;根据所述函数表对所述用户数据进行修改;输出修改结果。
11.可选的,所述函数表包括修改函数,所述根据所述函数表对所述用户数据进行修改包括以下步骤:根据所述函数表调用所述修改函数;执行所述修改函数对所述用户数据进行修改。
12.通过采用上述技术方案,第二方面,本技术还提供一种固态硬盘掉电保护系统,采用如下的技术方案:一种插件热加载与执行系统,其特征在于,包括:获取模块,所述获取模块用于获取所述客户端的所述用户数据;处理模块,所述处理模块用于通过插件对所述用户数据进行处理;输出模块,所述输出模块用于输出所述处理结果。、通过采用上述技术方案,通过获取模块获取用户数据,根据需求确认用户数据的类型,构建对应的插件信息,根据所述插件信息通过处理模块对用户数据进行处理,从而做到对用户数据的动态处理。
13.可选的,所述处理模块包括:加载单元,所述加载单元用于加载所述插件;调用单元,所述调用单元用于根据所述插件信息调用所述函数表;分析单元,所述分析子单元用于对所述用户数据进行分析;修改单元,所述修改子单元用于对所述用户数据进行修改。
14.第三方面,本技术提供一种终端设备,采用如下的技术方案:一种终端设备,包括存储器、处理器及存储在存储器中并能够在处理器上运行的计算机程序,所述处理器加载并执行计算机程序时,采用了上述的一种插件热加载方法。
15.通过采用上述技术方案,通过将上述的一种插件热加载方法生成计算机程序,并存储于存储器中,以被处理器加载并执行,从而,根据存储器及处理器制作终端设备,方便使用。
16.第四方面,本技术提供一种计算机可读存储介质,采用如下的技术方案:一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,所述计算机程序被处理器加载并执行时,采用了上述的一种插件热加载方法通过采用上述技术方案,通过将上述的一种插件热加载方法生成计算机程序,并存储于计算机可读存储介质中,以被处理器加载并执行,通过计算机可读存储介质,方便计算机程序的可读及存储。
附图说明
17.图1是本实施例一种插件热加载方法的整体流程图示意图。
18.图2是本实施例一种插件热加载方法中步骤s310-步骤s330的流程图示意图。
19.图3是是本实施例一种插件热加载方法中步骤s410-步骤s430的流程图示意图。
20.图4是是本实施例一种插件热加载方法中步骤s421-步骤s422的流程图示意图。
21.图5是是本实施例一种插件热加载方法中步骤s440-步骤s460的流程图示意图。
22.图6是是本实施例一种插件热加载方法中步骤s451-步骤s452的流程图示意图。
23.图7是是本实施例一种插件热加载系统中的整体模块示意图。
24.附图标记说明:1、获取模块;2、处理模块;21、加载单元;22、调用单元;23、分析单元;24、修改单元;3、输出模块。
具体实施方式
25.以下结合附图1-7对本技术作进一步详细说明。
26.本技术实施例公开一种插件热加载方法,参照图1,包括以下步骤:s100、暂停服务端通信,获取客户端的用户数据,将用户数据存入数据库;s200、根据用户数据选择插件,并确定用户数据类型;s300、根据用户数据类型构建插件信息,并根据插件信息加载插件;s400、根据插件对用户数据进行处理,并输出处理结果。
27.具体地,步骤s100中,获取到的用户数据包括所有设置了劫持代理的流量,包括用户流量中的域名地址和网站内容。在劫持过程中,用户可以选择对劫持到的请求进行放行、拒绝和修改,系统将会自动记录劫持到的请求内容保存到用户数据库,劫持的位置和时机一般来说是用户请求达到中间人或者代理服务器之后的进行劫持,中间人是指信息发出方和接收方之间拦截双方通讯,代理服务器是指代理网络用户去取得网络信息,它是网络信息的中转站,是个人网络和互联网服务商之间的中间代理机构,负责转发合法的网络信息,对转发进行控制和登记。通过证书中的sni得知转发目标的具体域名。用户请求到达中间人或者代理服务器之后,中间人假装自己是实际目标,使用自己的根证书替访问目标现场生成一个服务器证书和一个密钥。代理生成的服务端证书和密钥返回给用户,充当用户访问目标的证书和密钥,从而欺骗用户端“证书认证”过程。代理再把用户的请求转发给服务端,使用的是代理服务器的客户端自带的证书,来充当“用户”。将所有获取到的用户和网站流量存入数据库,从而可供操作人员对其处理。
28.具体地,步骤s200中,插件是一种遵循一定规范的应用程序接口编写出来的程序。插件由yak语言来编写,插件本质是一段yak语言代码,yak是一门语言,就是热加载代码的语言,这种语言也是通过编写完成的。获取用户数据的同时确定用户数据的类型,通过插件可以对获取的用户数据根据需求对其进行处理,用户数据的类型也是不同的。例如,涉及敏感数据的数据信息、指纹数据信息和用户数据的网络地址等。
29.具体地,步骤s300中,在本实施中,插件信息是指实现插件功能的编译信息,通过预先编写的插件框架可以动态的加载代码内容来实现插件对用户数据的各项处理功能,插件框架底层是由golang来编写的,golang是一种静态强类型、编译型语言。这段代码加载的时候会把语言通过golang的反射原理反射成可供golang调用的各种对象,这个过程称为热加载。
30.具体地,步骤s400中,通过加载插件信息,然后通过插件对用户数据信息进行提取
或者额外处理,最后输出对用户数据的处理结果。例如,若需要查找用户数据中的敏感数据,则构建并加载查找敏感数据的插件信息,通过插件来执行查找用户数据中的敏感数据的工作,并输出用户数据中的敏感数据信息。
31.其中,如图2所示,步骤s300中包括以下步骤:s310、根据用户数据类型确定插件信息,插件信息包括插件代码;s320、将插件信息输入至语言引擎中,语言引擎是指插件中的语言编译程序;s330、加载输入插件信息后的语言引擎。
32.具体地,步骤s310中,在本实施例中,插件信息包括插件代码,插件代码就是指使得插件对用户数据产生处理功能的一些特殊的语言,设计人员通过对这些语言进行组织编排制作出对用户数据具有处理功能的代码。例如,需要查找用户数据的网络地址,则对应的插件代码为yakit_outout(url),其中,yakit可分为yak和kit的组合,yak是指语言代码,kit是指工具箱,out表示输出,url表示用户数据的网络地址。
33.具体地,步骤s320-步骤s330中,插件中设置有语言引擎,将构建确定后的插件代码输入进语言引擎中的文本框内,插件代码中的内容可以通过语言引擎中设置的启用按键热加载到程序中。例如,若需要对用户数据中的网络地址进行查询,则在语言引擎的文本框内输入一段yakit_outout(url)插件代码,启用语言引擎,进而通过插件框架对插件进行加载,然后通过golang的反射原理反射成可供golang调用的各种对象,golang的反射原理是在编译时不知道类型的情况下,通过反射机制可以获取对象的类型、值、方法甚至动态改变对象的成员,通过golang调用可以查找指纹信息的对象。插件代码中的内容可以通过热加载到程序中。
34.其中,如图3所示,步骤s400包括以下步骤:s410、根据插件信息调用函数库中的函数表,函数库由函数表组成,函数库由插件定义,并内置于插件中;s420、根据函数表对用户数据进行分析;s430、输出分析结果。
35.具体地,步骤s410中,在本实施例中,函数表是内置的,插件框架会在特定的时候调用函数表中特定的函数,插件框架提供的函数的调用方式,函数的具体内容由插件来定义。
36.具体地,在步骤s420-步骤s430中,通过启用热加载可以将插件代码中的内容加载到插件程序中,插件程序根据插件代码中的内容调用对应的函数表,进而对用户数据执行分析工作,最终输出分析结果。例如,启用热加载将获取用户数据的网络地址的yakit_outout(url)插件代码加载到插件程序中,插件程序通过yakit_outout(url)调用对应的查找用户数据的网络地址的函数表,进而程序执行查找用户数据的网络地址的命令,把获取到的所有用户数据网络地址的结果输出。
37.其中,如图4所示,步骤s420包括以下步骤:s421、根据函数表调用分析函数;s422、执行分析函数对用户数据进行分析。
38.具体地,在本实施例中,插件内置有函数表,插件框架会在对用户数据进行分析时调用特定的分析函数。其中,插件实现的函数其实必须和插件框架内部定义的函数定义相
同,才能被插件框架调用。插件框架提供的函数的调用方式,函数的具体内容由插件来定义。获取不同的用户数据类型执行函数表中不同的hook分析函数,hook函数又称为钩子函数,是在系统运行时动态的将额外代码依附现进程,从而实现替换现有处理逻辑或插入额外功能的目的。把通过golang调用的对象中的特定名字的分析函数挑出来,就能构建hook函数表,然后在劫持的特定阶段调用特定的分析函数就可以实现用户任意插件在任意时刻调用达到特定目的。
39.具体地,在本实施例中,不同的hook分析函数偏向的用途是不一样的,劫持到不同情况执行不同的hook分析函数,若需要对所有用户数据进行业务分析,将会被执行mirrorfilteredhttpflow;若需要对用户数据做被动网站指纹识别,则所有请求将会被镜像,执行mirrorhttpflow;若需要对用户数据做漏洞检测,则每出现一个新的网站路径,执行mirrornewwebsitepath,每出现一个新网站路径,同时附带不同参数,执行mirrornewwebsitepathparams。
40.其中,如图5所示,步骤s400包括以下步骤:s440、根据插件信息调用函数库中的函数表,函数库由函数表组成,函数库由插件定义,并内置于插件中;s450、根据函数表对用户数据进行修改;s460、输出修改结果。
41.具体地,步骤s440中,在本实施例中,函数表是内置的,插件框架会在特定的时候调用函数表中特定的函数,插件框架提供的函数的调用方式,函数的具体内容由插件来定义。在实际使用的过程中,大部分情况都不会对用户数据本身的数据进行纂改,而是从流量中获取所需要的信息,然后提取或者额外处理。
42.具体地,在步骤s450-步骤s460中,通过启用热加载可以将插件代码中的内容加载到插件程序中,插件程序根据插件代码中的内容调用对应的函数表,进而对用户数据执行修改工作,最终输出修改结果。例如,启用热加载将构建模糊测试的插件代码yak.fuzz加载到插件程序中,fuzz检测是通过发送大量恶意或者随机数据到被检测系统,通过监视系统运行过程中的异常来发现应用程序中可能存在的安全问题,插件程序调用yak.fuzz模块,构建模糊测试模版请求,从请求模版中提取所有涉及的模糊测试的fuzz函数表,过滤掉不需要模糊测试的参数,通过执行fuzz函数表向程序发出建立模糊测试的指令,然后通过构建模糊测试对用户数据进行测试,最后输出测试结果。
43.其中,如图6所示,步骤s450包括以下步骤:s451、根据函数表调用修改函数;s452、执行修改函数对用户数据进行修改。
44.具体地,在本实施例中,插件内置有函数表,插件框架会在对用户数据进行修改时调用特定的修改函数。其中,插件实现的函数其实必须和插件框架内部定义的函数定义相同,才能被插件框架调用。插件框架提供的函数的调用方式,函数的具体内容由插件来定义。获取不同的用户数据类型执行函数表中不同的hook分析函数,hook函数又称为钩子函数,是在系统运行时动态的将额外代码依附现进程,从而实现替换现有处理逻辑或插入额外功能的目的。把通过golang调用的对象中的特定名字的修改函数挑出来,就能构建hook函数表,然后在劫持的特定阶段调用特定的修改函数就可以实现用户任意插件在任意时刻
调用达到特定目的。
45.具体地,在本实施例中,不同的hook修改函数偏向的用途是不一样的,劫持到不同情况执行不同的hook修改函数,若需要对所有用户数据进行漏洞检测,则根据构建模糊测试模版请求,调用fuzz函数表中的token url函数,这里的token url函数指hook修改函数,使用token url来代替原参数,这里使用yak.fuzz中模糊测试模版请求中的fuzz参数做替换。通过执行token url函数向程序发出建模糊测试的指令,然后对用户数据进行模糊测试。
46.本技术实施例一种插件热加载方法的实施原理为:暂停服务端通信,获取客户端所有的用户数据,将用户数据存入数据库中,根据用户数据选择插件,并确定用户数据类型,根据用户数据类型调用插件,根据需求构建插件信息,插件信息包括插件代码,将插件信息输入插件的语言引擎中的文本框内,通过热加载将插件信息的内容加载至插件程序中,根据插件信息调用函数库中的函数表,执行对应的hook分析或者修改函数,随即向系统发出对用户数据进行分析或者修改的指令,最后输出分析或者修改结果。
47.本技术实施例公开一种插件热加载系统,参照1图,包括获取模块1、调用模块、处理模块2和输出模块3,获取模块1用于获取客户端的用户数据;调用模块用于根据用户数据类型调用插件;处理模块2用于通过插件对用户数据进行处理;输出模块3用于输出处理结果。
48.具体地,在本实施例中,通过获取模块1获取客户端的用户数据,获取到的用户数据包括所有设置了劫持代理的流量,包括用户流量中的域名地址和网站内容。在通过获取模块1劫持用户数据的过程中,用户可以选择对劫持到的请求进行放行、拒绝和修改,获取模块1将会自动记录劫持到的请求内容保存到用户数据库,劫持的位置和时机一般来说是用户请求达到中间人或者代理服务器之后的进行劫持,中间人是指信息发出方和接收方之间拦截双方通讯,代理服务器是指代理网络用户去取得网络信息,它是网络信息的中转站,是个人网络和互联网服务商之间的中间代理机构,负责转发合法的网络信息,对转发进行控制和登记。通过证书中的sni得知转发目标的具体域名。用户请求到达中间人或者代理服务器之后,中间人假装自己是实际目标,使用自己的根证书替访问目标现场生成一个服务器证书和一个密钥。代理生成的服务端证书和密钥返回给用户,充当用户访问目标的证书和密钥,从而欺骗用户端“证书认证”过程。代理再把用户的请求转发给服务端,使用的是代理服务器的客户端自带的证书,来充当“用户”。将所有获取到的用户和网站流量存入数据库,从而可供操作人员对其处理。
49.具体地,在本实施例中,插件是一种遵循一定规范的应用程序接口编写出来的程序。插件由yak语言来编写,插件本质是一段yak语言代码,yak是一门语言,就是热加载代码的语言,这种语言也是通过编写完成的。获取用户数据的同时确定用户数据的类型,通过插件可以对获取的用户数据根据需求对其进行处理,用户数据的类型也是不同的。例如,涉及敏感数据的数据信息、指纹数据信息和用户数据的网络地址等。
50.具体地,如图1所示,处理模块2包括加载单元21、调用单元22、分析单元23和修改单元24,加载单元21用于加载插件;调用单元22用于根据插件信息调用函数表;分析子单元用于对用户数据进行分析;修改子单元用于对用户数据进行修改。
51.更具体地,通过预先编写的插件框架可以动态的通过加载单元21加载插件信息来
实现插件对用户数据的各项处理功能,插件信息是指实现插件功能的编译信息,通过预先编写的插件框架可以动态的加载代码内容来实现插件对用户数据的各项处理功能,插件框架底层是由golang来编写的,golang是一种静态强类型、编译型语言。这段代码加载的时候会把语言通过golang的反射原理反射成可供golang调用的各种对象,这个过程称为热加载。插件框架底层是由golang来编写的,golang是一种静态强类型、编译型语言。这段代码通过加载单元21进行加载的时候会把语言通过golang的反射原理反射成可供golang调用的各种对象,这个过程称为热加载。通过加载单元21加载插件信息,然后通过插件对用户数据信息进行提取或者额外处理,最后输出对用户数据的处理结果。例如,若需要查找用户数据中的敏感数据,则构建并通过加载单元21加载查找敏感数据的插件代码,通过插件来执行查找用户数据中的敏感数据的工作,并输出用户数据中的敏感数据信息。
52.更具体地,插件内置有函数表,插件框架会在对用户数据进行分析或者修改时通过调用单元22调用特定的分析或者修改函数。其中,插件实现的函数其实必须和插件框架内部定义的函数定义相同,才能被插件框架调用。插件框架提供的函数的调用方式,函数的具体内容由插件来定义。获取不同的用户数据类型执行函数表中不同的hook分析或者hook修改函数,hook函数又称为钩子函数,是在系统运行时动态的将额外代码依附现进程,从而实现替换现有处理逻辑或插入额外功能的目的。把通过golang调用的对象中的特定名字的分析函数挑出来,就能构建hook函数表,然后在劫持的特定阶段调用特定的分析函数就可以实现用户任意插件在任意时刻调用达到特定目的。
53.更具体地,在本实施例中,不同的hook分析函数偏向的用途是不一样的,劫持到不同情况执行不同的hook分析函数,若需要对所有用户数据进行业务分析,则通过调用单元22调用并执行mirrorfilteredhttpflow的分析函数,通过分析单元23对用户数据进行分析;若需要对用户数据做被动网站指纹识别,则所有请求将会被镜像,通过调用单元22调用并执行mirrorhttpflow的分析函数,通过分析单元23对用户数据进行分析。最后通过输出模块3输出对用户数据的分析结果。
54.更具体地,在本实施例中,不同的hook修改函数偏向的用途是不一样的,劫持到不同情况执行不同的hook修改函数,若需要对用户数据做漏洞检测,则每出现一个新的网站路径,执行mirrornewwebsitepath,每出现一个新网站路径,同时附带不同参数,执行mirrornewwebsitepathparams,根据构建模糊测试模版请求,通过调用单元22调用fuzz函数表中的token url函数,这里的token url函数指hook修改函数,使用token url通过修改单元24来代替原参数,这里使用yak.fuzz中模糊测试模版请求中的fuzz参数做替换,通过执行token url函数向程序发出建模糊测试的指令,然后对用户数据进行模糊测试。最后通过输出模块3输出对用户数据的修改结果。
55.本技术实施例一种插件热加载系统的实施原理为:暂停服务端通信,通过获取模块1获取客户端所有的用户数据,将用户数据存入数据库中,根据用户数据选择插件,并确定用户数据类型,根据用户数据类型调用插件,根据需求构建插件信息,插件信息包括插件代码,将插件信息输入插件的语言引擎中的文本框内,通过热加载将插件信息的内容通过加载单元21加载至插件程序中,根据插件信息通过调用单元22调用函数库中的函数表,执行对应的hook分析或者修改函数,随即向系统发出对用户数据进行分析或者修改的指令,通过分析单元23对用户数据进行分析或者通过修改单元24对用户数据进行修改。最后通过
输出模块3输出对用户数据的分析或者修改结果。
56.本技术实施例还公开一种终端设备,包括存储器、处理器以及存储在存储器中并能够在处理器上运行的计算机程序,其中,处理器执行计算机程序时,采用了上述实施例中的一种插件热加载与执行方法。
57.其中,终端设备可以采用台式电脑、笔记本电脑或者云端服务器等计算机设备,并且,终端设备包括但不限于处理器以及存储器,例如,终端设备还可以包括输入输出设备、网络接入设备以及总线等。
58.其中,处理器可以采用中央处理单元(cpu),当然,根据实际的使用情况,也可以采用其他通用处理器、数字信号处理器(dsp)、专用集成电路(asic)、现成可编程门阵列(fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,通用处理器可以采用微处理器或者任何常规的处理器等,本技术对此不做限制。
59.其中,存储器可以为终端设备的内部存储单元,例如,终端设备的硬盘或者内存,也可以为终端设备的外部存储设备,例如,终端设备上配备的插接式硬盘、智能存储卡(smc)、安全数字卡(sd)或者闪存卡(fc)等,并且,存储器还可以为终端设备的内部存储单元与外部存储设备的组合,存储器用于存储计算机程序以及终端设备所需的其他程序和数据,存储器还可以用于暂时地存储已经输出或者将要输出的数据,本技术对此不做限制。
60.其中,通过本终端设备,将上述实施例中的一种插件热加载与执行存储于终端设备的存储器中,并且,被加载并执行于终端设备的处理器上,方便使用。
61.本技术实施例还公开一种计算机可读存储介质,并且,计算机可读存储介质存储有计算机程序,其中,计算机程序被处理器执行时,采用了上述实施例中的一种插件热加载与执行。
62.其中,计算机程序可以存储于计算机可读介质中,计算机程序包括计算机程序代码,计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间件形式等,计算机可读介质包括能够携带计算机程序代码的任何实体或装置、记录介质、u盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(rom)、随机存取存储器(ram)、电载波信号、电信信号以及软件分发介质等,需要说明的是,计算机可读介质包括但不限于上述元器件。
63.其中,通过本计算机可读存储介质,将上述实施例中的一种插件热加载与执行存储于计算机可读存储介质中,并且,被加载并执行于处理器上,以方便上述方法的存储及应用。
64.以上均为本技术的较佳实施例,并非依此限制本技术的保护范围,故:凡依本技术的结构、形状、原理所做的等效变化,均应涵盖于本技术的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1