版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
(19)国家知识产权局(12)发明专利(73)专利权人中国工商银行股份有限公司55号(72)发明人旷亚和叶红姜城程佩哲公司11021GO6F11/14(2(56)对比文件审查员毕雪梅权利要求书2页说明书11页附图4页代码检测方法、装置、系统、设备及存储介质(57)摘要统、设备及存储介质,可以应用于金融领域、计算虚拟机内存中与目标应用相关联的运行内存代码,其中,目标应用基于运行内存代码运行;对运息包括运行内存代码中每个第一字节码文件的代码信息包括源内存代码中每个第二字节码文件的第二哈希值,源内存代码包括目标应用的初—S21021.一种代码检测方法,包括:将目标插件部署于目标应用中,根据预设时间间隔,通过所述目标插件定时获取虚拟机内存中与目标应用相关联的运行内存代码,其中,所述目标应用基于所述运行内存代码运行;对所述运行内存代码进行处理,生成与所述运行内存代码相对应的运行内存代码信息,其中,所述运行内存代码信息包括所述运行内存代码中每个第一字节码文件的第一哈希值;根据与源内存代码相对应的源内存代码信息对所述运行内存代码信息进行检测,输出与所述运行内存代码相对应的检测结果,其中,所述源内存代码信息包括所述源内存代码中每个第二字节码文件的第二哈希值,所述源内存代码包括所述目标应用的初始运行内存代码;所述根据与源内存代码相对应的源内存代码信息对所述运行内存代码信息进行检测,具体包括:将所述运行内存代码中每个第一字节码文件的第一哈希值与所述源内存代码中所述第一字节码文件对应的第二字节码文件的第二哈希值进行对比分析。2.根据权利要求1所述的方法,其中,所述对所述运行内存代码进行处理,生成与所述运行内存代码相对应的运行内存代码信息包括:依次对所述运行内存代码中的每个所述第一字节码文件进行扫描,输出与每个所述第一字节码文件相对应的所述第一哈希值。3.根据权利要求1所述的方法,还包括:在所述目标应用运行前,获取待部署的所述源内存代码;对所述源内存代码进行处理,生成与所述源内存代码相对应的所述源内存代码信息。4.根据权利要求3所述的方法,其中,所述对所述源内存代码进行处理,生成与所述源内存代码相对应的所述源内存代码信息包括:依次对所述源内存代码中的每个所述第二字节码文件进行扫描,输出与每个所述第二字节码文件相对应的所述第二哈希值。5.根据权利要求1所述的方法,其中,所述输出与所述运行内存代码相对应的检测结果包括:所述第一哈希值与所述第二哈希值不一致时,输出第一异常对比结果;根据所述第一异常对比结果,生成所述检测结果。6.根据权利要求5所述的方法,其中,所述运行内存代码信息还包括每个所述第一字节码文件的第一类名信息,所述源内存代码信息还包括每个所述第二字节码文件的第二类名信息;所述根据与源内存代码相对应的源内存代码信息对所述运行内存代码信息进行检测,输出与所述运行内存代码相对应的检测结果还包括:根据所述源内存代码信息中的每个所述第二类名信息与所述运行内存代码信息中的每个第一类名信息进行对比,输出第二异常对比结果;根据所述第一异常对比结果和所述第二异常对比结果生成所述检测结果。7.一种代码检测装置,包括:运行时代码扫描子系统,用于将目标插件部署于目标应用中,根据预设时间间隔,通过3所述目标插件定时获取虚拟机内存中与目标应用相关联的运行内存代码,其中,所述目标应用基于所述运行内存代码运行;以及对所述运行内存代码进行处理,生成与所述运行内存代码相对应的运行内存代码信息,其中,所述运行内存代码信息包括所述运行内存代码中每个第一字节码文件的第一哈希值;篡改检测子系统,用于根据与源内存代码相对应的源内存代码信息对所述运行内存代码信息进行检测,输出与所述运行内存代码相对应的检测结果,其中,所述源内存代码信息包括所述源内存代码中每个第二字节码文件的第二哈希值,所述源内存代码包括所述目标应用的初始运行内存代码;所述根据与源内存代码相对应的源内存代码信息对所述运行内存代码信息进行检测,具体包括:将所述运行内存代码中每个第一字节码文件的第一哈希值与所述源内存代码中所述第一字节码文件对应的第二字节码文件的第二哈希值进行对比分析。8.根据权利要求7所述的装置,还包括:源代码扫描子系统,用于在所述目标应用运行前,获取待部署的所述源内存代码;以及对所述源内存代码进行处理,生成与所述源内存代码相对应的所述源内存代码信息。第一获取模块,将目标插件部署于目标应用中,根据预设时间间隔,通过所述目标插件定时获取虚拟机内存中与目标应用相关联的运行内存代码,其中,所述目标应用基于所述运行内存代码运行;第一处理模块,用于对所述运行内存代码进行处理,生成与所述运行内存代码相对应的运行内存代码信息,其中,所述运行内存代码信息包括所述运行内存代码中每个第一字节码文件的第一哈希值;检测模块,用于根据与源内存代码相对应的源内存代码信息对所述运行内存代码信息进行检测,输出与所述运行内存代码相对应的检测结果,其中,所述源内存代码信息包括所述源内存代码中每个第二字节码文件的第二哈希值,所述源内存代码包括所述目标应用的初始运行内存代码;所述根据与源内存代码相对应的源内存代码信息对所述运行内存代码信息进行检测,具体包括:将所述运行内存代码中每个第一字节码文件的第一哈希值与所述源内存代码中所述第一字节码文件对应的第二字节码文件的第二哈希值进行对比分析。一个或多个处理器;存储装置,用于存储一个或多个程序,其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器执行根据权利要求1~6中任一项所述的方法。11.一种计算机可读存储介质,其上存储有可执行指令,该指令被处理器执行时使处理器执行根据权利要求1~6中任一项所述的方法。12.一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现根据权利要求1~6中任一项所述的方法。4技术领域[0001]本公开涉及金融领域、计算机技术领域和信息安全领域,更具体地涉及一种代码背景技术[0002]软件的完整性保护问题在目前计算机网络病毒、恶意代码和木马程序等肆虐横行的现实情况下变得尤为重要。许多这一类的网络攻击都利用了目前缺乏有效手段对软件提供完整性保护这一薄弱环节,使攻击者得以将一个本来语义或行为基本上正确或至少是非恶意的软件的代码部分篡改成错误的甚至是恶意的版本。[0003]在实现本公开发明构思的过程中,发明人发现相关技术中至少存在以下问题:相关技术中主要基于对源码及服务器上运行的代码进行文件数量比对或文件内容比对,检测范围较小,对木马等文件检测效果较差。发明内容[0005]根据本公开的第一个方面,提供了一种代码检测方法[0006]获取虚拟机内存中与目标应用相关联的运行内存代码,其中,上述目标应用基于上述运行内存代码运行;[0007]对上述运行内存代码进行处理,生成与上述运行内存代码相对应的运行内存代码信息,其中,上述运行内存代码信息包括上述运行内存代码中每个第一字节码文件的第一哈希值;[0008]根据与源内存代码相对应的源内存代码信息对上述运行内存代码信息进行检测,输出与上述运行内存代码相对应的检测结果,其中,上述源内存代码信息包括上述源内存代码中每个第二字节码文件的第二哈希值,上述源内存代码包括上述目标应用的初始运行内存代码。[0009]根据本公开的实施例,上述获取虚拟机内存中与目标应用相关联的运行内存代码包括:[0010]将目标插件部署于上述目标应用中;[0011]根据预设时间间隔,通过上述目标插件定时获取上述虚拟机内存中的上述运行内存代码。[0012]根据本公开的实施例,上述对上述运行内存代码进行处理,生成与上述运行内存代码相对应的运行内存代码信息包括:[0013]依次对上述运行内存代码中的每个上述第一字节码文件进行扫描,输出与每个上述第一字节码文件相对应的上述第一哈希值。[0014]根据本公开的实施例,上述代码检测方法还包括:5[0015]在上述目标应用运行前,获取待部署的上述源内存代码;[0016]对上述源内存代码进行处理,生成与上述源内存代码相对应的上述源内存代码信[0017]根据本公开的实施例,上述对上述源内存代码进行处理,生成与上述源内存代码相对应的上述源内存代码信息包括:[0018]依次对上述源内存代码中的每个上述第二字节码文件进行扫描,输出与每个上述第二字节码文件相对应的上述第二哈希值。[0019]根据本公开的实施例,上述根据与源内存代码相对应的源内存代码信息对上述运行内存代码信息进行检测,输出与上述运行内存代码相对应的检测结果包括:[0020]根据上述源内存代码信息中的每个上述第二哈希值与上述运行内存代码信息中的每个第一哈希值进行对比,输出第一异常对比结果;[0022]根据本公开的实施例,上述运行内存代码信息还包括每个上述第一字节码文件的第一类名信息,上述源内存代码信息还包括每个上述第二字节码文件的第二类名信息;[0023]上述根据与源内存代码相对应的源内存代码信息对上述运行内存代码信息进行检测,输出与上述运行内存代码相对应的检测结果还包括:[0024]根据上述源内存代码信息中的每个上述第二类名信息与上述运行内存代码信息中的每个第一类名信息进行对比,输出第二异常对比结果;[0025]根据上述第一异常对比结果和上述第二异常对比结果生成上述检测结果。[0026]本公开的第二方面提供了一种代码检测装置,[0027]运行时代码扫描子系统,用于获取虚拟机内存中与目标应用相关联的运行内存代码,其中,上述目标应用基于上述运行内存代码运行;以及对上述运行内存代码进行处理,生成与上述运行内存代码相对应的运行内存代码信息,其中,上述运行内存代码信息包括上述运行内存代码中每个第一字节码文件的第一哈希值;[0028]篡改检测子系统,用于根据与源内存代码相对应的源内存代码信息对上述运行内存代码信息进行检测,输出与上述运行内存代码相对应的检测结果,其中,上述源内存代码信息包括上述源内存代码中每个第二字节码文件的第二哈希值,上述源内存代码包括上述目标应用的初始运行内存代码。[0030]源代码扫描子系统,用于在上述目标应用运行前,获取待部署的上述源内存代码;以及对上述源内存代码进行处理,生成与上述源内存代码相对应的上述源内存代码信息。[0031]本公开的第三方面提供了一种代码检测系统,[0032]第一获取模块,用于获取虚拟机内存中与目标应用相关联的运行内存代码,其中,上述目标应用基于上述运行内存代码运行;[0033]第一处理模块,用于对上述运行内存代码进行处理,生成与上述运行内存代码相对应的运行内存代码信息,其中,上述运行内存代码信息包括上述运行内存代码中每个第一字节码文件的第一哈希值;[0034]检测模块,用于根据与源内存代码相对应的源内存代码信息对上述运行内存代码信息进行检测,输出与上述运行内存代码相对应的检测结果,其中,上述源内存代码信息包6括上述源内存代码中每个第二字节码文件的第二哈希值,上述源内存代码包括上述目标应用的初始运行内存代码。[0035]本公开的第四方面提供了一种电子设备,包括:一个或多个处理器;存储器,用于存储一个或多个程序,其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得一个或多个处理器执行上述代码检测方法。[0036]本公开的第五方面还提供了一种计算机可读存储介质,其上存储有可执行指令,该指令被处理器执行时使处理器执行上述代码检测方法。[0037]本公开的第六方面还提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述代码检测方法。附图说明[0038]通过以下参照附图对本公开实施例的描述,本公开的上述内容以及其他目的、特[0039]图1示意性示出了根据本公开实施例的代码检测方法的应用场景图;[0040]图2示意性示出了根据本公开实施例的代码检测方法的流程图;[0041]图3示意性示出了根据本公开实施例的代码检测装置的结构框图;[0042]图4示意性示出了根据本公开实施例的代码检测装置的结构框图;[0043]图5示意性示出了根据本公开实施例的代码检测装置的结构框图;[0044]图6示意性示出了根据本公开实施例的代码检测装置的结构框图;[0045]图7示意性示出了根据本公开实施例的代码检测系统的结构框图;以及[0046]图8示意性示出了根据本公开实施例的实现代码检测方法的电子设备的方框图。具体实施方式[0047]以下,将参照附图来描述本公开的实施例。但是应该理解,这些描述只是示例性的,而并非要限制本公开的范围。在下面的详细描述中,为便于解释,阐述了许多具体的细节以提供对本公开实施例的全面理解。然而,明显地,一个或多个实施例在没有这些具体细节的情况下也可以被实施。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本公开的概念。[0048]在此使用的术语仅仅是为了描述具体实施例,而并非意在限制本公开。在此使用[0049]在此使用的所有术语(包括技术和科学术语)具有本领域技术人员通常所理解的含义,除非另外定义。应注意,这里使用的术语应解释为具有与本说明书的上下文相一致的含义,而不应以理想化或过于刻板的方式来解释。领域技术人员通常理解该表述的含义来予以解释(例如,“具有A、B和C中至少一个的系统”[0051]相关技术中代码完整性保护方案主要基于对源内存代码及服务器上运行的代码7进行文件数量的比对或文件内容的比对。然而,大量的木马文件以内存代码的形式存在于应用服务器中,因此在服务器中无法找到对应的落地文件,导致基于文件的代码完整性保护方案失效。[0052]有鉴于此,发明人发现可以将服务器的虚拟机内存中的运行内存代码进行导出,并对其进行哈希值的计算,同时利用源内存代码对应的哈希值与运行内存代码的哈希值进行对比,从而可以判断服务器中运行的运行内存代码是否存在木马文件等恶意信息。品,该方法包括:获取虚拟机内存中与目标应用相关联的运行内存代码,其中,目标应用基于运行内存代码运行;对运行内存代码进行处理,生成与运行内存代码相对应的运行内存代码信息,其中,运行内存代码信息包括运行内存代码中每个第一字节码文件的第一哈希值;根据与源内存代码相对应的源内存代码信息对运行内存代码信息进行检测,输出与运行内存代码相对应的检测结果,其中,源内存代码信息包括源内存代码中每个第二字节码文件的第二哈希值,源内存代码包括目标应用的初始运行内存代码。[0054]需要说明的是,本公开提供的代码检测方法、装置、系统、设备及存储介质可以应用于金融领域,例如,可用于银行等金融机构,也可用于除金融领域之外的任意领域,例如做限定。[0055]图1示意性示出了根据本公开实施例的代码检测方法的应用场景图。[0056]如图1所示,根据该实施例的应用场景100可以包括网络104和多个服务器105。网络104用以在终端设备101、102、103和服务器105之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。[0057]用户可以使用终端设备101、102、103通过网络104与服务器105交互,以运行目标[0058]终端设备101、102、103可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。[0059]服务器105可以是提供各种服务的服务器,例如执行用户利用终端设备101、102、103所请求服务器105执行的目标应用,也可以执行对运行内存代码进行检测处理,并将处理结果(例如根据用户请求服务器105执行的目标应用生成的检测结果,例如该检测结果显示用户的目标应用中包括恶意内存木马,恶意增加、篡改的类文件等)反馈给终端设备。[0060]需要说明的是,本公开实施例所提供的代码检测方法一般可以由服务器105执行。相应地,本公开实施例所提供的代码检测装置一般可以设置于服务器105中。本公开实施例所提供的代码检测方法也可以由不同于服务器105且能够与终端设备101、102、103和/或服务器105通信的服务器或服务器集群执行。相应地,本公开实施例所提供的代码检测装置也可以设置于不同于服务器105且能够与终端设备101、102、103和/或服务器105通信的服务器或服务器集群中。[0061]应该理解,图1中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需[0062]以下将基于图1描述的场景,通过图2~图6对公开实施例的代码检测方法进行详细描述。8[0063]图2示意性示出了根据本公开实施例的代码检测方法的流程图。[0064]如图2所示,该实施例的代码检测方法包括操作S210~操作S230。[0065]在操作S210,获取虚拟机内存中与目标应用相关联的运行内存代码,其中,目标应用基于运行内存代码运行。[0066]在操作S220,对运行内存代码进行处理,生成与运行内存代码相对应的运行内存代码信息,其中,运行内存代码信息包括运行内存代码中每个第一字节码文件的第一哈希值。[0067]在操作S230,根据与源内存代码相对应的源内存代码信息对运行内存代码信息进行检测,输出与运行内存代码相对应的检测结果,其中,源内存代码信息包括源内存代码中每个第二字节码文件的第二哈希值,源内存代码包括目标应用的初始运行内存代码。[0068]根据本公开的实施例,字节码(Byte-code)是一种包含执行程序,由一序列操作码(operationcode,op)代码或数据对组成的二进制文件,是一种中间码。[0069]根据本公开的实施例,哈希值可以指利用哈希算法将任意长度的二进制值映射为固定长度的较小二进制值。其中,第一哈希值和第二哈希值均可以包括信息摘要(Message[0070]根据本公开的实施例,在进行代码的检测时,从虚拟机中的内存中获取与目标应用关联的运行内存代码,根据该运行内存代码中的每个第一字节码文件生成对应的第一哈希值,将第一哈希值与源内存代码信息中对应于第一字节码文件的第二字节码文件的第二哈希值进行对比分析,从而判断虚拟机中的第一字节码文件与第二字节码文件是否相同的检测结果。[0071]根据本公开的实施例,在检测结果表明二者相同的情况下,表明第二字节码文件中不存在恶意代码,恶意代码包括但不限于恶意内存[0072]根据本公开的实施例,在检测结果表明二者不相同的情况下,表明第二字节码文件中存在恶意代码。[0073]根据本公开的实施例,通过获取目标应用运行时的运行内存代码,对运行内存代码进行处理,生成包含运行内存代码中每个第一字节码文件的第一哈希值的运行内存代码信息,通过包括源内存代码中每个第二字节码文件的第二哈希值的源内存代码信息对运行内存代码信息进行检测,输出检测结果的技术手段,通过原部署的源内存代码信息对运行时的运行代码信息进行检测,能够对插入的恶意内存木马,恶意增加、篡改的类文件进行实时监控,解决了相关技术中主要基于对源码及服务器上运行的代码进行文件数量比对或文件内容比对,检测范围较小,对木马等文件检测效果较差的技术问题,从而扩大了检测范围,提高了对木马等文件的检测效果,有效地保障了应用的安全运行。[0074]根据本公开的实施例,获取虚拟机内存中与目标应用相关联的运行内存代码可以包括如下操作。[0075]将目标插件部署于目标应用中。根据预设时间间隔,通过目标插件定时获取虚拟机内存中的运行内存代码。[0076]根据本公开的实施例,目标插件可以包括但不限于接入模块。接入模块可以包括JavaAgent接入模块。[0077]根据本公开的实施例,JavaAgent接入模块的作用包括将引擎附加到运行的目标9应用中。可以通过启动时增加Agent参数,或者在应用运行过程中利用附加进程的方式将JavaAgent绑定到待检测的目标应用上。[0078]根据本公开的实施例,对运行内存代码进行处理,生成与运行内存代码相对应的运行内存代码信息可以包括如下操作。[0079]依次对运行内存代码中的每个第一字节码文件进行扫描,输出与每个第一字节码文件相对应的第一哈希值。[0080]根据本公开的实施例,由于运行内存代码中的第一字节码文件数量较多,因此在进行检测之前,需要将运行内存代码中的每个第一字节码文件进行计算以得到对应于每个第一字节码文件的第一哈希值,以便于后续将第一哈希值与第二哈希值进行检测分析。[0081]根据本公开的实施例,上述代码检测方法还可以包括如下操作。[0082]在目标应用运行前,获取待部署的源内存代码。对源内存代码进行处理,生成内存代码相对应的源内存代码信息。[0083]根据本公开的实施例,对源内存代码进行处理,生成与源内存代码相对应的源内存代码信息可以包括如下操作。[0084]依次对源内存代码中的每个第二字节码文件进行扫描,输出与每个第二字节码文件相对应的第二哈希值。[0085]根据本公开的实施例,由于源内存代码中的第二字节码文件数量较多,因此在进行检测之前,需要将源内存代码中的每个第二字节码文件进行计算以得到对应于每个第二字节码文件的第二哈希值,以便于后续将第一哈希值与第二哈希值进行检测分析。根据本公开的实施例,根据与源内存代码相对应的源内存代码信息对运行内存代码信息进行检测,输出与运行内存代码相对应的检测结果可以包括如下操作。[0086]根据源内存代码信息中的每个第二哈希值与运行内存代码信息中的每个第一哈[0087]根据本公开的实施例,第一异常对比结果可以表征第一哈希值与第二哈希值不一致,换言之,第一哈希值对应的第一字节码文件存在恶意信息,例如该第一字节码文件已被他人恶意增加和/或篡改。[0088]根据本公开的实施例,上述的检测结果还可以包括第一正常对比结果,其中,第一正常对比结果可以表征第一哈希值与第二哈希值一致,换言之,第一哈希值对应的第一字节码文件中不存在恶意信息。[0089]根据本公开的实施例,运行内存代码信息还可以包括每个第一字节码文件的第一类名信息,源内存代码信息还可以包括每个第二字节码文件的第二类名信息。[0090]根据本公开的实施例,根据与源内存代码相对应的源内存代码信息对运行内存代码信息进行检测,输出与运行内存代码相对应的检测结果还可以包括如下操作。[0091]根据源内存代码信息中的每个第二类名信息与运行内存代码信息中的每个第一类名信息进行对比,输出第二异常对比结果。根据第一异常对比结果和第二异常对比结果生成检测结果。[0092]根据本公开的实施例,第二异常对比结果可以表征源内存代码信息中的每个第二类名信息与运行内存代码信息中的每个第一类名信息不同,换言之,第二异常对比结果可以表征第一类名信息对应的第一字节码文件已被他人恶意增加和/或篡改。[0093]根据本公开的实施例,上述的检测结果还可以包括第二正常结果,其中,第二正常结果可以表征源内存代码信息中的每个第二类名信息与运行内存代码信息中的每个第一类名信息相同。[0094]基于上述代码检测方法,本公开还提供了一种代码检测系统。以下将结合图3~图6对该系统进行详细描述。[0095]图3示意性示出了根据本公开实施例的代码检测装置的结构框图。[0096]如图3所示,代码检测装置300可以包括运行时代码扫描子系统310和篡改检测子[0097]运行时代码扫描子系统310,用于获取虚拟机内存中与目标应用相关联的运行内存代码,其中,目标应用基于运行内存代码运行;以及对运行内存代码进行处理,生成与运行内存代码相对应的运行内存代码信息,其中,运行内存代码信息包括运行内存代码中每个第一字节码文件的第一哈希值。[0098]篡改检测子系统320,用于根据与源内存代码相对应的源内存代码信息对运行内存代码信息进行检测,输出与运行内存代码相对应的检测结果,其中,源内存代码信息包括源内存代码中每个第二字节码文件的第二哈希值,源内存代码包括目标应用的初始运行内存代码。[0099]根据本公开的实施例,通过获取目标应用运行时的运行内存代码,对运行内存代码进行处理,生成包含运行内存代码中每个第一字节码文件的第一哈希值的运行内存代码信息,通过包括源内存代码中每个第二字节码文件的第二哈希值的源内存代码信息对运行内存代码信息进行检测,输出检测结果的技术手段,通过原部署的源内存代码信息对运行时的运行代码信息进行检测,能够对插入的恶意内存木马,恶意增加、篡改的类文件进行实时监控,解决了相关技术中主要基于对源码及服务器上运行的代码进行文件数量比对或文件内容比对,检测范围较小,对木马等文件检测效果较差的技术问题,从而扩大了检测范围,提高了对木马等文件的检测效果,有效地保障了应用的安全运行。[0100]如图3所示,上述代码检测装置300还可以包括源代码扫描子系统。[0101]源代码扫描子系统330,用于在目标应用运行前,获取待部署的源内存代码;以及对源内存代码进行处理,生成与源内存代码相对应的源内存代码信息。[0102]图4示意性示出了根据本公开实施例的代码检测装置的结构框图。[0103]如图4所示,上述运行时代码扫描子系统310可以包括接入模块311、字节码转存模块312和第一信息上送模块313.接入模块311可以包括JavaAgent接入模块。[0104]根据本公开的实施例,JavaAgent接入模块的作用可以包括将引擎附加到运行的目标应用中。可以通过启动时增加Agent参数,或者在应用运行过程中利用附加进程的方式将JavaAgent绑定到待检测的目标应用上。[0105]根据本公开的实施例,字节码转存模块312利用接入模块311绑定的代理引擎,每隔一段时间转存出虚拟机内存中的运行内存代码。[0106]根据本公开的实施例,第一信息上送模块313的作用可以包括将字节码转存模块312获取并计算出的运行内存代码的信息进行传输,以便后续的检测分析。[0107]图5示意性示出了根据本公开实施例的代码检测装置的结构框图。[0108]如图5所示,上述篡改检测子系统320可以包括篡改分析模块321。11[0109]根据本公开的实施例,篡改分析模块321的作用可以包括接收第二哈希值、第二类名信息,以及接收运行时代码扫描子系统传输的第一哈希值、第一类名信息。由于各种病毒、木马等恶意信息在修改第一类名信息或新增代码后,这些被篡改的第一类名信息均需被应用的类加载器所加载并执行,故通过对比虚拟机内存中运行的运行内存代码的第一类名信息与源内存代码信息的第二类名信息,可以有效监测代码中的恶意信息。[0110]如图5所示,上述篡改检测子系统320还可以包括信息展示模块322。[0111]信息展示模块322可以将篡改分析模块321分析检测到的检测结果进行展示,例如可以对被篡改的运行内存代码中的新增的类、篡改的类进行展示,以便于对开发人员进行提醒。[0112]根据本公开的实施例,运行时代码扫描子系统310中的字节码转存模块312还可以计算每个第一字节码文件的第一类名信息,以便于篡改检测子系统320对源内存代码信息中的第二字节码文件的第二类名信息和第一类名信息进行检测分析。[0113]图6示意性示出了根据本公开实施例的代码检测装置的结构框图。[0114]如图6所示,源代码扫描子系统330可以包括代码扫描模块331和第二信息上送模块332。[0115]根据本公开的实施例,代码扫描模块331可以获取待部署的目标应用的源内存代码,对源内存代码中的所有第二字节码文件进行扫描,计算每个第二字节码文件对应的第二哈希值和第二类名信息。[0116]根据本公开的实施例,第二信息上送模块332可以将代码扫描模块331计算出的源内存代码中的所有第二字节码文件的第一哈希值和第一类名信息传输至篡改检测子系统320,以便后续检测分析。[0117]根据本公开的实施例,源代码扫描子系统330传输的为初始类基线信息。运行时代码扫描子系统310传输的为虚拟机内存中实时运行的类信息,其中,类信息可以包括哈希值和类名信息。[0118]基于上述代码检测方法,本公开还提供了一种代码检测系统。以下将结合图7对该系统进行详细描述。[0119]图7示意性示出了根据本公开实施例的代码检测系统的结构框图。[0120]如图7所示,该实施例的代码检测系统700可以包括第一获取模块710、第一处理模块720和检测模块730。[0121]第一获取模块710用于获取虚拟机内存中与目标应用相关联的运行内存代码,其中,目标应用基于运行内存代码运行。在一实施例中,第一获取模块710可以用于执行前文描述的操作S210,在此不再赘述。[0122]第一处理模块720用于对运行内存代码进行处理,生成与运行内存代码相对应的运行内存代码信息,其中,运行内存代码信息包括运行内存代码中每个第一字节码文件的第一哈希值。在一实施例中,第一处理模块720可以用于执行前文描述的操作S220,在此不再赘述。[0123]检测模块730用于根据与源内存代码相对应的源内存代码信息对运行内存代码信息进行检测,输出与运行内存代码相对应的检测结果,其中,源内存代码信息包括源内存代码中每个第二字节码文件的第二哈希值,源内存代码包括目标应用的初始运行内存代码。在一实施例中,检测模块730可以用于执行前文描述的操作S230,在此不再赘述。[0124]根据本公开的实施例,通过获取目标应用运行时的运行内存代码,对运行内存代码进行处理,生成包含运行内存代码中每个第一字节码文件的第一哈希值的运行内存代码信息,通过包括源内存代码中每个第二字节码文件的第二哈希值的源内存代码信息对运行内存代码信息进行检测,输出检测结果的技术手段,通过原部署的源内存代码信息对运行时的运行代码信息进行检测,能够对插入的恶意内存木马,恶意增加、篡改的类文件进行实时监控,解决了相关技术中主要基于对源码及服务器上运行的代码进行文件数量比对或文件内容比对,检测范围较小,对木马等文件检测效果较差的技术问题,从而扩大了检测范围,提高了对木马等文件的检测效果,有效地保障了应用的安全运行。[0125]根据本公开的实施例,第一获取模块710可以包括部署单元和获取单元。[0126]部署单元,用于将目标插件部署于目标应用中。[0127]获取单元,用于根据预设时间间隔,通过目标插件定时获取虚拟机内存中的运行内存代码。[0128]根据本公开的实施例,第一处理模块720可以包括第一处理单元。[0129]第一处理单元,用于依次对运行内存代码中的每个第一字节码文件进行扫描,输出与每个第一字节码文件相对应的第一哈希值。[0130]根据本公开的实施例,上述代码检测系统700还可以包括第二获取模块和第二处理模块。[0131]第二获取模块,用于在目标应用运行前,获取待部署的源内存代码。[0132]第二处理模块,用于对源内存代码进行处理,生成与源内存代码相对应的源内存代码信息。[0133]根据本公开的实施例,第二处理模块可以包括第二处理单元。[0134]第二处理单元,用于依次对源内存代码中的每个第二字节码文件进行扫描,输出与每个第二字节码文件相对应的第二哈希值。[0135]根据本公开的实施例,检测模块730可以包括第一对比单元和第一生成单元。[0136]第一对比单元,用于根据源内存代码信息中的每个第二哈希值与运行内存代码信息中的每个第一哈希值进行对比,输出第一异常对比结果。[0137]第一生成单元,用于根据第一异常对比结果,生[0138]根据本公开的实施例,运行内存代码信息还包括每个第一字节码文件的第一类名信息,源内存代码信息还包括每个第二字节码文件的第二类名信息。[0139]根据本公开的实施例,检测模块730还可以包括第二对比单元和第二生成单元。[0140]第二对比单元,用于根据源内存代码信息中的每个第二类名信息与运行内存代码信息中的每个第一类名信息进行对比,输出第二异常对比结果。[0141]第二生成单元,用于根据第一异常对比结果和第二异常对比结果生成检测结果。[0142]根据本公开的实施例,第一获取模块710、第一处理模块720和检测模块730中的任意多个模块可以合并在一个模块中实现,或者其中的任意一个模块可以被拆分成多个模块。或者,这些模块中的一个或多个模块的至少部分功能可以与其他模块的至少部分功能相结合,并在一个模块中实现。根据本公开的实施例,第一获取模块710、第一处理模块720和检测模块730中的至少一个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(FPGA)、可编程逻辑阵列(PLA)、片上系统、基板上的系统、封装上的系统、专用集成电路(ASIC),或可以通过对电路进行集成或封装的任何其他的合理方式等硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,第一获取模块710、第一处理模块720和检测模块730中的至少一个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。[0143]图8示意性示出了根据本公开实施例的适于实现代码检测方法的电子设备的方框[0144]如图8所示,根据本公开实施例的电子设备800包括处理器801,其可以根据存储在只读存储器(ROM)802中的程序或者从存储部分808加载到随机访问存储器(RAM)803中的程序而执行各种适当的动作和处理。处理器801例如可以包括通用微处理器(例如CPU)、指令集处理器和/或相关芯片组和/或专用微处理器(例如,专用集成电路(ASIC))等等。处理器801还可以包括用于缓存用途的板载存储器。处理器801可以包括用于执行根据本公开实施例的方法流程的不同动作的单一处理单元或者是多个处理单元。[0145]在RAM803中,存储有电子设备800操作所需的各种程序和数据。处理器801、ROM802以及RAM803通过总线804彼此相连。处理器801通过执行ROM802和/或RAM803中的程序来执行根据本公开实施例的方法流程的各种操作。需要注意,所述程序也可以存储在除ROM802和RAM803以外的一个或多个存储器中。处理器801也可以通过执行存储在所述一个或多个存储器中的程序来执行根据本公开实施例的方法流程的各种操作。[0146]根据本公开的实施例,电子设备800还可以包括输入/输出(I/0)接口805,输入/输出(I/O)接口805也连接至总线804。电子设备800还可以包括连接至I/0接口805的以下部件中的一项或多项:包括键盘、鼠标等的输入部分806;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分807;包括硬盘等的存储部分808;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分809。通信部分809经由诸如因特网的网络执行通信处理。驱动器810也根据需要连接至I/0接口805。可拆卸介质811,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器810上,以便于从其上读出的计算机程序根据需要被安装入存储部分808。[0147]本公开还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例中描述的设备/装置/系统中所包含的;也可以是单独存在,而未装配入该设备/装置/系统中。上述计算机可读存储介质承载有一个或者多个程序,当上述一个或者多个程序被执行时,实现根据本公开实施例的方法。[0148]根据本公开的实施例,计算机可读存储介质可以是非易失性的计算机可读存储介质,例如可以包括但不限于:便携式计算机磁盘、硬盘、随机存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。例如,根据本公开的实施例,计算机可读存储介质可以包括上文描述的[0149]本公开的实施例还包括一种计算机程序产品,其包括计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。当计算机程序产品在计算机系统中运行时,该程序代
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 深度解析(2026)《GBT 34225-2017浸胶芳纶直经直纬帆布技术条件和评价方法》
- 深度解析(2026)《GBT 34122-2017 220kV~750kV电网继电保护和安全自动装置配置技术规范》
- 2026年中山职业技术学院附属幼儿园招聘备考题库及答案详解(易错题)
- 2026年芒市国富备考题库科技有限公司招聘备考题库及参考答案详解1套
- 2026年嘉兴市秀水高级中学公开招聘教师备考题库及答案详解(考点梳理)
- 2026年将乐县公开招聘紧缺急需专业新任教师备考题库及答案详解(考点梳理)
- 2026年黄埔海关国际旅行卫生保健中心公开招聘非占编聘用人员的备考题库有完整答案详解
- 2026年福建省乡总农业集团有限公司员工招聘备考题库及答案详解参考
- 2026年共青团中央所属单位高校毕业生公开招聘66人备考题库及1套参考答案详解
- 2026年个旧市润霖建设发展有限责任公司招聘备考题库及一套完整答案详解
- 供应链管理-金属结构制造行业的全球化与协同创新-洞察阐释
- 纺织工业“十五五”发展规划
- 人工智能通识 课件 第七章 智能之躯-具身智能
- 肝栓塞介入手术后护理
- 《辣椒病害图谱》课件
- 超市火灾安全演练与疏散预案
- 教育教学微型课题申请·评审表
- 职业技术学院《建筑力学与结构》课程标准
- 翻译技术实践智慧树知到期末考试答案章节答案2024年山东师范大学
- JJG 621-2012 液压千斤顶行业标准
- 未分化型精神分裂症的护理查房
评论
0/150
提交评论