一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

前端代码的运行方法及其装置、电子设备及存储介质与流程

2023-03-28 18:53:58 来源:中国专利 TAG:


1.本发明涉及信息安全领域,具体而言,涉及一种前端代码的运行方法及其装置、电子设备及存储介质。


背景技术:

2.随着移动互联网技术的高速发展以及智能移动终端的全面普及,javascript(一种编程语言)技术得了广泛应用,源代码安全问题也日益凸显。由于javascript的脚本语言特性,代码公开透明,攻击者可以直接获取源代码阅读、分析、复制、盗用和篡改,web前端核心业务功能逻辑被分析和泄露的风险较高,容易导致源代码泄露、用户敏感数据泄露以及假冒用户数据等。例如,可通过代码逻辑分析、f12代码调试获取程序中的业务逻辑,并篡改javascript程序,以绕过前端业务逻辑和数据校验等过程,实现爬取商品信息和价格,商品自动秒杀,批量注册小号领取优惠券以及广告点击欺诈等恶意攻击。不法分子对前端代码进行简单修改后直接复制、盗用,将导致各机构代码自主产权被侵害。
3.相关技术中,一些开源代码压缩工具(例如,uglifyjs,一种js解释器)可提供代码压缩能力,减小代码体积,降低代码可读性。然而,开源代码压缩工具对代码的安全保护能力较低,不能改变代码基本结构,无代码混淆和加密功能,可通过js beautifier(一种js解释器)等工具进行可读性优化和代码还原。虽然,相关技术中可通过混淆引擎实现javascript代码的基础混淆和保护,但是该方法仅具备代码基本混淆功能,无法防止动态跟踪调试代码,前端代码的安全性依然得不到保障。
4.针对上述的问题,目前尚未提出有效的解决方案。


技术实现要素:

5.本发明实施例提供了一种前端代码的运行方法及其装置、电子设备及存储介质,以至少解决相关技术中无法防止前端代码被动态跟踪调试,导致前端代码的安全性较低的技术问题。
6.根据本发明实施例的一个方面,提供了一种前端代码的运行方法,包括:获取源代码的全量代码;对所述全量代码进行预设混淆处理,得到初始运行代码;基于所述初始运行代码的安全等级,确定所述初始运行代码中的核心业务代码;在对所述初始运行代码中的所述核心业务代码完成虚拟化处理的情况下,得到目标运行代码,并将所述目标运行代码发送至目标前端,其中,所述目标前端用于运行所述目标运行代码。
7.可选地,对所述全量代码进行预设混淆处理,得到初始运行代码的步骤,包括:对所述全量代码中的对象数据以及函数数据进行混淆处理,并对混淆处理后的所述对象数据以及所述函数数据进行加密处理,生成第一运行代码;对所述第一运行代码中的控制流代码进行扁平化处理,生成第二运行代码;在所述第二运行代码中插入冗余代码,生成所述初始运行代码。
8.可选地,在对所述全量代码进行预设混淆处理,得到初始运行代码之后,还包括:
确定所述初始运行代码中的调试函数;将所述调试函数替换为预设空白函数;在将所述调试函数替换为所述预设空白函数的情况下,采用预设断点策略阻断所述初始运行代码中的调试功能。
9.可选地,在基于所述初始运行代码的安全等级,确定所述初始运行代码中的核心业务代码之后,还包括:对所述核心业务代码进行虚拟化处理,生成抽象语法树;基于所述抽象语法树,生成预设指令集合;将所述预设指令集合转换成预设字节码,其中,所述预设字节码与预设解释器一一对应,所述预设解释器用于解析对应的所述预设字节码。
10.可选地,对所述核心业务代码进行虚拟化处理,生成抽象语法树的步骤,包括:将所述核心业务代码转换为多个单词符号串;将所述多个单词符号串组合成预设语法短语;在所述预设语法短语通过语法检查的情况下,基于所述预设语法短语构建预设数据结构;对所述预设数据结构进行抽象化处理,生成所述抽象语法树。
11.可选地,在将所述目标运行代码发送至目标前端之后,还包括:将与所述预设字节码对应的所述预设解释器发送至所述目标前端,其中,所述目标前端中的浏览器加载所述预设解释器,以解析所述目标运行代码中的所述预设字节码;在所述预设解释器对所述目标运行代码中的所述预设字节码全部解析完成的情况下,采用所述目标前端运行所述目标运行代码。
12.可选地,还包括:在所述目标前端运行所述目标运行代码的情况下,监测所述目标前端的运行环境;在所述运行环境指示为代码篡改环境的情况下,计算所述目标运行代码的哈希值以及当前运行代码的哈希值;在所述目标运行代码的哈希值以及所述当前运行代码的哈希值一致时,确定所述目标运行代码运行安全;在所述运行环境指示为代码调试环境的情况下,监测所述当前运行代码的调试函数,在对所述调试函数监测通过后,确定所述目标运行代码运行安全。
13.根据本发明实施例的另一方面,还提供了一种前端代码的运行装置,包括:获取单元,用于获取源代码的全量代码;处理单元,用于对所述全量代码进行预设混淆处理,得到初始运行代码;确定单元,用于基于所述初始运行代码的安全等级,确定所述初始运行代码中的核心业务代码;发送单元,用于在对所述初始运行代码中的所述核心业务代码完成虚拟化处理的情况下,得到目标运行代码,并将所述目标运行代码发送至目标前端,其中,所述目标前端用于运行所述目标运行代码。
14.可选地,所述处理单元包括:第一生成模块,用于对所述全量代码中的对象数据以及函数数据进行混淆处理,并对混淆处理后的所述对象数据以及所述函数数据进行加密处理,生成第一运行代码;第二生成模块,用于对所述第一运行代码中的控制流代码进行扁平化处理,生成第二运行代码;第三生成模块,用于在所述第二运行代码中插入冗余代码,生成所述初始运行代码。
15.可选地,所述运行装置还包括:第一确定模块,用于在对所述全量代码进行预设混淆处理,得到初始运行代码之后,确定所述初始运行代码中的调试函数;第一替换模块,用于将所述调试函数替换为预设空白函数;第一阻断模块,用于在将所述调试函数替换为所述预设空白函数的情况下,采用预设断点策略阻断所述初始运行代码中的调试功能。
16.可选地,所述运行装置还包括:第四生成模块,用于在基于所述初始运行代码的安全等级,确定所述初始运行代码中的核心业务代码之后,对所述核心业务代码进行虚拟化
处理,生成抽象语法树;第五生成模块,用于基于所述抽象语法树,生成预设指令集合;第一转换模块,用于将所述预设指令集合转换成预设字节码,其中,所述预设字节码与预设解释器一一对应,所述预设解释器用于解析对应的所述预设字节码。
17.可选地,所述第四生成模块包括:第一转换子模块,用于将所述核心业务代码转换为多个单词符号串;第一组合子模块,用于将所述多个单词符号串组合成预设语法短语;第一构建子模块,用于在所述预设语法短语通过语法检查的情况下,基于所述预设语法短语构建预设数据结构;第一生成子模块,用于对所述预设数据结构进行抽象化处理,生成所述抽象语法树。
18.可选地,所述运行装置还包括:第一发送模块,用于在将所述目标运行代码发送至目标前端之后,将与所述预设字节码对应的所述预设解释器发送至所述目标前端,其中,所述目标前端中的浏览器加载所述预设解释器,以解析所述目标运行代码中的所述预设字节码;第一运行模块,用于在所述预设解释器对所述目标运行代码中的所述预设字节码全部解析完成的情况下,采用所述目标前端运行所述目标运行代码。
19.可选地,所述运行装置还包括:第一监测模块,用于在所述目标前端运行所述目标运行代码的情况下,监测所述目标前端的运行环境;第二确定模块,用于在所述运行环境指示为代码篡改环境的情况下,计算所述目标运行代码的哈希值以及当前运行代码的哈希值;在所述目标运行代码的哈希值以及所述当前运行代码的哈希值一致时,确定所述目标运行代码运行安全;第三确定模块,用于在所述运行环境指示为代码调试环境的情况下,监测所述当前运行代码的调试函数,在对所述调试函数监测通过后,确定所述目标运行代码运行安全。
20.根据本发明实施例的另一方面,还提供了一种计算机可读存储介质,所述计算机可读存储介质包括存储的计算机程序,其中,在所述计算机程序运行时控制所述计算机可读存储介质所在设备执行上述所述的前端代码的运行方法。
21.根据本发明实施例的另一方面,还提供了一种电子设备,包括一个或多个处理器和存储器,所述存储器用于存储一个或多个程序,其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现上述所述的前端代码的运行方法。
22.在本公开中,获取源代码的全量代码,对全量代码进行预设混淆处理,得到初始运行代码,基于初始运行代码的安全等级,确定初始运行代码中的核心业务代码,在对初始运行代码中的核心业务代码完成虚拟化处理的情况下,得到目标运行代码,并将目标运行代码发送至目标前端。在本公开中,可先对源代码的全量代码进行预设混淆处理,然后再对核心业务代码进行虚拟化处理,将得到的目标运行代码发送至目标前端运行,能够防止前端代码被静态分析以及动态调试,提升了前端代码的安全防护能力,进而解决了相关技术中无法防止前端代码被动态跟踪调试,导致前端代码的安全性较低的技术问题。
附图说明
23.此处所说明的附图用来提供对本发明的进一步理解,构成本技术的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
24.图1是根据本发明实施例的一种可选的前端代码的运行方法的流程图;
25.图2是根据本发明实施例的一种可选的虚拟化保护流程的示意图;
26.图3是根据本发明实施例的一种可选的虚拟化保护后的代码的执行流程的示意图;
27.图4是根据本发明实施例的一种可选的前端代码机密性保护方法的示意图;
28.图5是根据本发明实施例的一种可选的对代码执行时的风险分析流程的示意图;
29.图6是根据本发明实施例的一种可选的前端代码的运行装置的示意图;
30.图7是根据本发明实施例的一种用于前端代码的运行方法的电子设备(或移动设备)的硬件结构框图。
具体实施方式
31.为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
32.需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
33.需要说明的是,本公开中的前端代码的运行方法及其装置可用于信息安全领域在运行前端代码的情况下,也可用于除信息安全领域之外的任意领域在运行前端代码的情况下,本公开中对前端代码的运行方法及其装置的应用领域不做限定。
34.需要说明的是,本公开所涉及的相关信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于展示的数据、分析的数据等),均为经用户授权或者经过各方充分授权的信息和数据。例如,本系统和相关用户或机构间设置有接口,在获取相关信息之前,需要通过接口向前述的用户或机构发送获取请求,并在接收到前述的用户或机构反馈的同意信息后,获取相关信息。
35.本发明提供了一种实现简单,实施成本低,能够有效防止对前端代码分析调试的方法,能够克服相关技术中代码防护强度较弱的不足。本发明通过变量名混淆、字符串加密、冗余代码插入、控制流扁平化、禁用调试功能、虚拟化保护、运行环境监测等技术的协同配合,能够提升前端代码静态分析成本,既可以兼顾性能,又可以使前端代码运行时具有高安全性,能够有效防止代码的静态分析和动态调试,提升了web前端代码的安全防护能力。
36.下面结合各个实施例来详细说明本发明。
37.实施例一
38.根据本发明实施例,提供了一种前端代码的运行方法的实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示
出或描述的步骤。
39.图1是根据本发明实施例的一种可选的前端代码的运行方法的流程图,如图1所示,该方法包括如下步骤:
40.步骤s101,获取源代码的全量代码。
41.步骤s102,对全量代码进行预设混淆处理,得到初始运行代码。
42.步骤s103,基于初始运行代码的安全等级,确定初始运行代码中的核心业务代码。
43.步骤s104,在对初始运行代码中的核心业务代码完成虚拟化处理的情况下,得到目标运行代码,并将目标运行代码发送至目标前端,其中,目标前端用于运行目标运行代码。
44.通过上述步骤,可以获取源代码的全量代码,对全量代码进行预设混淆处理,得到初始运行代码,基于初始运行代码的安全等级,确定初始运行代码中的核心业务代码,在对初始运行代码中的核心业务代码完成虚拟化处理的情况下,得到目标运行代码,并将目标运行代码发送至目标前端。在本发明实施例中,可先对源代码的全量代码进行预设混淆处理,然后再对核心业务代码进行虚拟化处理,将得到的目标运行代码发送至目标前端运行,能够防止前端代码被静态分析以及动态调试,提升了前端代码的安全防护能力,进而解决了相关技术中无法防止前端代码被动态跟踪调试,导致前端代码的安全性较低的技术问题。
45.下面结合上述各步骤对本发明实施例进行详细说明。
46.步骤s101,获取源代码的全量代码。
47.在本发明实施例中,可以先获取将要在前端运行的源代码(即未编译的按照某一程序设计语言规范书写的文本文件)的全量代码(即所有代码)。
48.步骤s102,对全量代码进行预设混淆处理,得到初始运行代码。
49.可选地,对全量代码进行预设混淆处理,得到初始运行代码的步骤,包括:对全量代码中的对象数据以及函数数据进行混淆处理,并对混淆处理后的对象数据以及函数数据进行加密处理,生成第一运行代码;对第一运行代码中的控制流代码进行扁平化处理,生成第二运行代码;在第二运行代码中插入冗余代码,生成初始运行代码。
50.在本发明实施例中,可以先对全量代码中的对象数据(例如,变量名、数组、对象、字符串等)以及函数数据(例如,函数名、函数变量等)进行混淆处理,并对混淆处理后的对象数据以及函数数据进行加密处理,生成第一运行代码(即可以通过编码、加密、变形、切分等形式对全量代码中的变量名、数组、对象、字符串等对象数据以及函数数据进行处理,得到变量名混淆以及字符串加密处理后的第一运行代码),能够保护前端代码中的关键信息。之后,可以对第一运行代码中的控制流代码进行扁平化处理(即转换源代码结构,对控制流代码进行扁平化处理,以混淆代码执行逻辑),生成第二运行代码。然后,可以在第二运行代码中插入冗余代码(例如,通过构造虚假控制流和指令,替换原有的控制流和指令来隐藏代码执行流程,以达到保护代码机密性的目的),生成初始运行代码。
51.可选地,在对全量代码进行预设混淆处理,得到初始运行代码之后,还包括:确定初始运行代码中的调试函数;将调试函数替换为预设空白函数;在将调试函数替换为预设空白函数的情况下,采用预设断点策略阻断初始运行代码中的调试功能。
52.在本发明实施例中,在对全量代码进行预设混淆处理,得到初始运行代码之后,可
以对初始运行代码进行禁用调试功能,该禁用调试功能主要包括:禁用控制台输出函数和阻断debug调试,以使得在使用调试器进行调试时,增加了前端代码的动态调试成本,其中,禁用控制台输出函数可使用空函数替换代码中的一些常用调试函数(例如,console.log、console.info、console.error、console.warn、console.debug、console.except ion、console.trace等调试函数),能够达到禁用调试相关函数的目的;阻断debug调试可使用无限循环命中debugger断点的方式(即预设断点策略)实现,以达到开发者工具控制台选项卡被禁用的目的。具体为:可以先确定初始运行代码中的调试函数,将调试函数替换为预设空白函数,然后在将调试函数替换为预设空白函数的情况下,采用预设断点策略(即使用无限循环命中debugger断点的方式)阻断初始运行代码中的调试功能。
53.步骤s103,基于初始运行代码的安全等级,确定初始运行代码中的核心业务代码。
54.在本发明实施例中,可以根据代码安全等级,对代码进行分层处理。可以先根据初始运行代码的安全等级,确定初始运行代码中的核心业务代码(即安全等级要求较高的代码),以使用虚拟化保护模式进一步提升核心业务代码的安全性,能够使得加固后的整体代码达到安全性与性能平衡兼顾的效果。
55.可选地,在基于初始运行代码的安全等级,确定初始运行代码中的核心业务代码之后,还包括:对核心业务代码进行虚拟化处理,生成抽象语法树;基于抽象语法树,生成预设指令集合;将预设指令集合转换成预设字节码,其中,预设字节码与预设解释器一一对应,预设解释器用于解析对应的预设字节码。
56.在本发明实施例中,图2是根据本发明实施例的一种可选的虚拟化保护流程的示意图,如图2所示,虚拟化保护包括:对源代码进行词法分析、语法分析、抽象语法树构造ast,之后生成自定义私有指令,并设置自定义私有解释器(解释器)。
57.在本实施例中,可以将源代码编译成自定义私有指令集,并通过自定义私有解释器来模拟解释执行自定义私有指令的方法来防止代码被破解和篡改,攻击者无法直接反编译指令来分析或修改代码逻辑。相较于变量名混淆等混淆模式,虚拟化保护模式需要自定义和加载私有解释器,处理流程较复杂,性能略低,但安全性更高,因此,可以仅对核心业务代码进行虚拟化保护,以达到安全性与性能平衡兼顾的效果。
58.在本发明实施例中,可以先对核心业务代码进行虚拟化处理,生成抽象语法树(即abstract syntax tree,ast,该ast是一种对源代码的抽象语法结构的树状表现形式),然后根据ast,生成自定义指令(即基于抽象语法树,生成预设指令集合),并将自定义指令最终转换成预设字节码(即将预设指令集合转换成预设字节码,例如,二进制字节码),预设字节码只有对应的解释器可以解析,攻击者无法推断出程序逻辑(即预设字节码与预设解释器一一对应,预设解释器用于解析对应的预设字节码(即预设解释器时用于运行自定义私有指令的程序))。
59.可选地,对核心业务代码进行虚拟化处理,生成抽象语法树的步骤,包括:将核心业务代码转换为多个单词符号串;将多个单词符号串组合成预设语法短语;在预设语法短语通过语法检查的情况下,基于预设语法短语构建预设数据结构;对预设数据结构进行抽象化处理,生成抽象语法树。
60.在本发明实施例中,可以先对核心业务代码进行词法分析,具体为:通过扫描核心业务代码,输出多个单词符号串,把字符串形式的核心业务代码改造为单词符号串形式的
中间程序(即将核心业务代码转换为多个单词符号串)。然后,进行语法分析,具体为:将词法分析得到的单词符号串组合成语法短语,并进行语法检查、构建相应的数据结构(即将多个单词符号串组合成预设语法短语,在预设语法短语通过语法检查的情况下,基于预设语法短语构建预设数据结构)。之后,对预设数据结构进行抽象化处理,生成抽象语法树。
61.图3是根据本发明实施例的一种可选的虚拟化保护后的代码的执行流程的示意图,如图3所示,将私有指令和私有解释器同步发送给浏览器,浏览器首先加载私有解释器,并运行私有解释器来解析私有指令,之后解释执行解析后的稀有指令。
62.步骤s104,在对初始运行代码中的核心业务代码完成虚拟化处理的情况下,得到目标运行代码,并将目标运行代码发送至目标前端,其中,目标前端用于运行目标运行代码。
63.在本发明实施例中,在对初始运行代码中的核心业务代码完成虚拟化处理后,得到可以运行在目标前端的目标运行代码,并将目标运行代码发送至目标前端,之后目标前端可以运行目标运行代码。
64.可选地,在将目标运行代码发送至目标前端之后,还包括:将与预设字节码对应的预设解释器发送至目标前端,其中,目标前端中的浏览器加载预设解释器,以解析目标运行代码中的预设字节码;在预设解释器对目标运行代码中的预设字节码全部解析完成的情况下,采用目标前端运行目标运行代码。
65.在本发明实施例中,为了使目标前端能够运行虚拟化保护后的核心业务代码,可以将与预设字节码对应的预设解释器发送至目标前端,之后目标前端中的浏览器可以加载预设解释器,以解析目标运行代码中的预设字节码,然后在预设解释器对目标运行代码中的预设字节码全部解析完成的情况下,采用目标前端运行目标运行代码。
66.可选地,还包括:在目标前端运行目标运行代码的情况下,监测目标前端的运行环境;在运行环境指示为代码篡改环境的情况下,计算目标运行代码的哈希值以及当前运行代码的哈希值;在目标运行代码的哈希值以及当前运行代码的哈希值一致时,确定目标运行代码运行安全;在运行环境指示为代码调试环境的情况下,监测当前运行代码的调试函数,在对调试函数监测通过后,确定目标运行代码运行安全。
67.在本发明实施例中,在目标前端运行目标运行代码的过程中,可以监测目标前端的运行环境,以主动发现前端代码调试行为并发送到服务端,可结合服务端风控系统等制定个性化的安全策略,具体为:可以通过计算、比较目标运行代码和当前运行代码的哈希值,检测源代码是否被篡改(即在运行环境指示为代码篡改环境的情况下,计算目标运行代码的哈希值以及当前运行代码的哈希值,在目标运行代码的哈希值以及当前运行代码的哈希值一致时,确定目标运行代码运行安全);还可以通过检测调试特征(如,debugger指令)等发现前端代码被调试的行为(即在运行环境指示为代码调试环境的情况下,监测当前运行代码的调试函数,在对调试函数监测通过后,确定目标运行代码运行安全)。
68.下面结合另一种可选的具体实施方式进行详细说明。
69.图4是根据本发明实施例的一种可选的前端代码机密性保护方法的示意图,如图4所示,在进行前端代码安全性保护时,可以根据代码安全等级进行代码分层处理。具体为:对于输入的源代码的全量代码,可以先对全量代码使用变量名混淆、字符串加密、冗余代码插入、控制流扁平化等方式进行基础混淆保护,并禁用调试功能,达到对非核心业务代码以
及核心业务代码实现轻量级安全防护的效果;在此基础上,筛选核心业务逻辑等安全等级要求较高的代码(即核心业务代码),使用虚拟化保护模式进一步提升核心业务代码的安全性,实现对核心业务代码的高级安全保护,并且加固后的整体代码达到安全性与性能平衡兼顾的效果,之后输出防护后的代码,并将防护后的代码在前端运行。在防护后的代码在前端运行时,可以进行运行环境监测(包括:代码篡改检测以及代码调试检测),以加强高级安全防护等级,并能够在发现前端代码调试行为后,主动发送该行为到服务端,之后可结合服务端风控系统等制定个性化的安全策略。
70.图5是根据本发明实施例的一种可选的对代码执行时的风险分析流程的示意图,如图5所示,在前端和服务端协同互动方面,服务端完成代码机密性保护后,将已受保护的代码下发到前端运行,前端将代码执行过程中的运行监测结果上传到服务端,供服务端进行前端风险分析和制定安全策略。
71.本发明实施例中,通过差异化地使用变量名混淆、禁用调试功能、虚拟化保护等方式,对web前端运行的代码进行机密性保护,能够有效避免业务处理逻辑被分析和绕过校验被攻击,实现了web前端代码防护,解决了前端代码明文传输、代码逻辑易被分析和盗用等安全威胁,能够有效识别出可能存在的安全风险,同时,加固后的整体代码能够达到安全性与性能平衡兼顾的效果,且还具有如下有益效果:
72.(1)基于虚拟化保护技术,通过自定义私有指令的方式,隐藏了明文代码,能够有效提升前端代码的安全防护能力。
73.(2)将变量名混淆等基础代码混淆、禁用调试功能、虚拟化保护、运行环境监测等进行协同配合,实现了代码安全保护,并且均衡了代码运行的性能。
74.(3)对web前端代码运行环境进行监测,主动发现前端调试行为并发送服务端,能够使服务端研判综合风险以及制定安全策略。
75.下面结合另一实施例进行详细说明。
76.实施例二
77.本实施例中提供的一种前端代码的运行装置包含了多个实施单元,每个实施单元对应于上述实施例一中的各个实施步骤。
78.图6是根据本发明实施例的一种可选的前端代码的运行装置的示意图,如图6所示,该运行装置可以包括:获取单元60,处理单元61,确定单元62,发送单元63,其中,
79.获取单元60,用于获取源代码的全量代码;
80.处理单元61,用于对全量代码进行预设混淆处理,得到初始运行代码;
81.确定单元62,用于基于初始运行代码的安全等级,确定初始运行代码中的核心业务代码;
82.发送单元63,用于在对初始运行代码中的核心业务代码完成虚拟化处理的情况下,得到目标运行代码,并将目标运行代码发送至目标前端,其中,目标前端用于运行目标运行代码。
83.上述运行装置,可以通过获取单元60获取源代码的全量代码,通过处理单元61对全量代码进行预设混淆处理,得到初始运行代码,通过确定单元62基于初始运行代码的安全等级,确定初始运行代码中的核心业务代码,通过发送单元63在对初始运行代码中的核心业务代码完成虚拟化处理的情况下,得到目标运行代码,并将目标运行代码发送至目标
前端。在本发明实施例中,可先对源代码的全量代码进行预设混淆处理,然后再对核心业务代码进行虚拟化处理,将得到的目标运行代码发送至目标前端运行,能够防止前端代码被静态分析以及动态调试,提升了前端代码的安全防护能力,进而解决了相关技术中无法防止前端代码被动态跟踪调试,导致前端代码的安全性较低的技术问题。
84.可选地,处理单元包括:第一生成模块,用于对全量代码中的对象数据以及函数数据进行混淆处理,并对混淆处理后的对象数据以及函数数据进行加密处理,生成第一运行代码;第二生成模块,用于对第一运行代码中的控制流代码进行扁平化处理,生成第二运行代码;第三生成模块,用于在第二运行代码中插入冗余代码,生成初始运行代码。
85.可选地,运行装置还包括:第一确定模块,用于在对全量代码进行预设混淆处理,得到初始运行代码之后,确定初始运行代码中的调试函数;第一替换模块,用于将调试函数替换为预设空白函数;第一阻断模块,用于在将调试函数替换为预设空白函数的情况下,采用预设断点策略阻断初始运行代码中的调试功能。
86.可选地,运行装置还包括:第四生成模块,用于在基于初始运行代码的安全等级,确定初始运行代码中的核心业务代码之后,对核心业务代码进行虚拟化处理,生成抽象语法树;第五生成模块,用于基于抽象语法树,生成预设指令集合;第一转换模块,用于将预设指令集合转换成预设字节码,其中,预设字节码与预设解释器一一对应,预设解释器用于解析对应的预设字节码。
87.可选地,第四生成模块包括:第一转换子模块,用于将核心业务代码转换为多个单词符号串;第一组合子模块,用于将多个单词符号串组合成预设语法短语;第一构建子模块,用于在预设语法短语通过语法检查的情况下,基于预设语法短语构建预设数据结构;第一生成子模块,用于对预设数据结构进行抽象化处理,生成抽象语法树。
88.可选地,运行装置还包括:第一发送模块,用于在将目标运行代码发送至目标前端之后,将与预设字节码对应的预设解释器发送至目标前端,其中,目标前端中的浏览器加载预设解释器,以解析目标运行代码中的预设字节码;第一运行模块,用于在预设解释器对目标运行代码中的预设字节码全部解析完成的情况下,采用目标前端运行目标运行代码。
89.可选地,运行装置还包括:第一监测模块,用于在目标前端运行目标运行代码的情况下,监测目标前端的运行环境;第二确定模块,用于在运行环境指示为代码篡改环境的情况下,计算目标运行代码的哈希值以及当前运行代码的哈希值;在目标运行代码的哈希值以及当前运行代码的哈希值一致时,确定目标运行代码运行安全;第三确定模块,用于在运行环境指示为代码调试环境的情况下,监测当前运行代码的调试函数,在对调试函数监测通过后,确定目标运行代码运行安全。
90.上述的运行装置还可以包括处理器和存储器,上述获取单元60,处理单元61,确定单元62,发送单元63等均作为程序单元存储在存储器中,由处理器执行存储在存储器中的上述程序单元来实现相应的功能。
91.上述处理器中包含内核,由内核去存储器中调取相应的程序单元。内核可以设置一个或以上,通过调整内核参数来在对初始运行代码中的核心业务代码完成虚拟化处理的情况下,得到目标运行代码,并将目标运行代码发送至目标前端。
92.上述存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flash ram),存储器包括至
少一个存储芯片。
93.本技术还提供了一种计算机程序产品,当在数据处理设备上执行时,适于执行初始化有如下方法步骤的程序:获取源代码的全量代码,对全量代码进行预设混淆处理,得到初始运行代码,基于初始运行代码的安全等级,确定初始运行代码中的核心业务代码,在对初始运行代码中的核心业务代码完成虚拟化处理的情况下,得到目标运行代码,并将目标运行代码发送至目标前端。
94.根据本发明实施例的另一方面,还提供了一种计算机可读存储介质,计算机可读存储介质包括存储的计算机程序,其中,在计算机程序运行时控制计算机可读存储介质所在设备执行上述的前端代码的运行方法。
95.根据本发明实施例的另一方面,还提供了一种电子设备,包括一个或多个处理器和存储器,存储器用于存储一个或多个程序,其中,当一个或多个程序被一个或多个处理器执行时,使得一个或多个处理器实现上述的前端代码的运行方法。
96.图7是根据本发明实施例的一种用于前端代码的运行方法的电子设备(或移动设备)的硬件结构框图。如图7所示,电子设备可以包括一个或多个(图中采用702a、702b,
……
,702n来示出)处理器702(处理器702可以包括但不限于微处理器mcu或可编程逻辑器件fpga等的处理装置)、用于存储数据的存储器704。除此以外,还可以包括:显示器、输入/输出接口(i/o接口)、通用串行总线(usb)端口(可以作为i/o接口的端口中的一个端口被包括)、网络接口、键盘、电源和/或相机。本领域普通技术人员可以理解,图7所示的结构仅为示意,其并不对上述电子装置的结构造成限定。例如,电子设备还可包括比图7中所示更多或者更少的组件,或者具有与图7所示不同的配置。
97.上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
98.在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
99.在本技术所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
100.所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
101.另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
102.所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机
设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
103.以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献