首页 / 专利库 / 软件 / 片段 / 一种JavaScript代码保护方法及装置

一种JavaScript代码保护方法及装置

阅读:920发布:2024-02-23

专利汇可以提供一种JavaScript代码保护方法及装置专利检索,专利查询,专利分析的服务。并且本 发明 公开了一种JavaScript代码保护方法,该方法包括步骤:获取源代码中的变量名称,根据映射规则用预置字符串代替变量名称,获取替换后源代码;对替换后源代码中的代码 片段 进行加密,获取加密后源代码;以及判断加密后的代码片段是否被篡改,若没有则将加密后源代码作为受保护的源代码。,下面是一种JavaScript代码保护方法及装置专利的具体信息内容。

1.一种JavaScript代码保护方法,所述方法包括步骤:
获取源代码中的变量名称,根据映射规则用预置字符串代替变量名称,获取替换后源代码;
对所述替换后源代码中的代码片段进行加密,获取加密后源代码,其中,所述代码片段是随机挑选的一个或多个函数,加密的步骤包括:
定义加密算法的偏移量;
将所述代码片段中的所有字符值偏移所述偏移量;
采用预定函数替换所述加密代码片段;以及
判断所述加密后的代码片段是否被篡改,
判断加密后的代码片段中指定位的字符是否等于预置字符,若等于则没有被篡改;
若不等于则被篡改;
若判断结果是没有被篡改,则将所述加密后源代码作为受保护的源代码,若判断结果是被篡改,则返回NULL以中断函数调用。
2.如权利要求1所述的方法,其中所述获取替换后源代码的步骤还包括:
获取源代码中的函数名称,根据映射规则用预置字符串代替函数名称,获取替换后源代码。
3.如权利要求2所述的方法,其中所述预置字符串是由数字0、数字1、小写字母o、小写字母l、大写字母O组成。
4.如权利要求1所述的方法,还包括步骤:
重复所述加密步骤,对所述代码片段进行多次迭代加密。
5.如权利要求1-4中任一项所述的方法,其中所述判断加密后的代码片段是否被篡改的步骤包括:
判断加密后的代码片段中字符串长度是否等于预置长度,若等于则没有被篡改。
6.一种JavaScript代码保护装置,所述装置包括:
获取模,适于获取JavaScript代码作为源代码,以及获取源代码中的变量名称;
替换模块,适于根据映射规则用预置字符串代替变量名称,得到替换后源代码;
加密模块,适于对所述替换后源代码中的代码片段进行加密,获取加密后源代码,其中所述代码片段是随机挑选的一个或多个函数,所述加密模块包括:
存储子模块,适于定义加密算法的偏移量;
加密子模块,适于将所述代码片段中的所有字符值偏移所述偏移量;
标识子模块,适于采用预定函数替换所述加密代码片段;以及
校验模块,适于判断所述加密后的代码片段是否被篡改,
还适于判断加密后的代码片段中指定位的字符是否等于预置字符,
若等于则没有被篡改;
若不等于则被篡改;
若判断结果是没有被篡改,则将所述加密后源代码作为受保护的源代码,若判断结果是被篡改,则返回NULL以中断函数调用。
7.如权利要求6所述的装置,其中:
所述获取模块还适于获取源代码中的函数名称;以及
所述替换模块还适于根据映射规则用预置字符串代替函数名称,获取替换后源代码。
8.如权利要求7所述的装置,其中所述预置字符串是由数字0、数字1、小写字母o、小写字母l、大写字母O组成。
9.如权利要求6所述的装置,其中所述加密模块还包括:
迭代子模块,适于对所述代码片段进行多次迭代加密。
10.如权利要求6-9中任一项所述的装置,其中,
所述校验模块适于判断加密后的代码片段中字符串长度是否等于预置长度,若等于则没有被篡改。

说明书全文

一种JavaScript代码保护方法及装置

技术领域

[0001] 本发明涉及网络技术领域,尤其涉及一种JavaScript代码保护方法及装置。

背景技术

[0002] JavaScript是一种直接在目标机器上运行的脚本语言,它具有代码的可见性,即用JavaScript语言编写的代码,必须被明文下载到客户端,这使得以明文形式显示的JavaScript代码很容易被他人盗用,不能得到保护,代码的安全性很差,人人都可以直接查看运行的代码片段并进行修改、复制及翻版传播。而目前随着HTML5的崛起,JavaScript语言应用范围越来越广,包括著名的手机游戏开源引擎Cocos2d-JS的版本、服务端开发技术Node.js以及传统的Web开发等等。在上述情况下,都不可避免地要把运行代码暴露给第三方厂商。
[0003] 因此,对JavaScript代码保护技术的需求也日趋迫切。现有技术中存在两种JavaScript代码混淆的方法,第一种方法是利用JavaScript中的escape()函数对JavaScript代码进行加密,同时可以使用unescape()函数对加密后的JavaScript代码进行解密。第二种方法是首先将JavaScript代码中的换行符去除,其次将去除换行符的JavaScript代码中的变量名称用随机名称进行替换。
[0004] 上述第一种方法中,由于JavaScript中的escape()函数和unescape()函数众所周知,所以利用第一种方法对JavaScript代码进行混淆不能使其安全性得到保障。运用第二种方法对JavaScript代码进行混淆后,获取的JavaScript代码中除了被替换的变量名称仍存在本领域技术人员可读取的有意义的字符,所以该方法仍然不能有效地保护JavaScript代码。

发明内容

[0005] 为此,本发明提供一种JavaScript代码保护方法及装置,以图解决或者至少缓解上面存在的至少一个问题。
[0006] 根据本发明的一个方面,提供了一种JavaScript代码保护方法,该方法包括步骤:获取源代码中的变量名称,根据映射规则用预置字符串代替变量名称,获取替换后源代码;
对替换后源代码中的代码片段进行加密,获取加密后源代码;以及判断加密后的代码片段是否被篡改,若没有则将加密后源代码作为受保护的源代码。
[0007] 可选地,在根据本发明的JavaScript代码保护方法中,获取替换后源代码的步骤还包括:获取源代码中的函数名称,根据映射规则用预置字符串代替函数名称,获取替换后源代码。
[0008] 可选地,在根据本发明的JavaScript代码保护方法中,预置字符串是由数字0、数字1、小写字母o、小写字母l、大写字母O组成。
[0009] 可选地,在根据本发明的JavaScript代码保护方法中,对替换后源代码中的代码片段进行加密的步骤包括:定义加密算法的偏移量;将代码片段中的所有字符值偏移所述偏移量;以及采用预定函数替换该加密代码片段。
[0010] 可选地,在根据本发明的JavaScript代码保护方法中,还包括步骤:重复上述加密步骤,对代码片段进行多次迭代加密。
[0011] 可选地,在根据本发明的JavaScript代码保护方法中,判断加密后的代码片段是否被篡改的步骤包括:判断加密后的代码片段中字符串长度是否等于预置长度,若等于则没有被篡改。
[0012] 可选地,在根据本发明的JavaScript代码保护方法中,判断加密后的代码片段是否被篡改的步骤还包括:判断加密后的代码片段中指定位的字符是否等于预置字符,若等于则没有被篡改。
[0013] 根据本发明的另一方面,提供了一种JavaScript代码保护装置,该装置包括:获取模,适于获取JavaScript代码作为源代码,以及获取源代码中的变量名称;替换模块,适于根据映射规则用预置字符串代替变量名称,得到替换后源代码;加密模块,适于对替换后源代码中的代码片段进行加密,获取加密后源代码;以及校验模块,适于判断加密后的代码片段是否被篡改,若没有则将加密后源代码作为受保护的源代码。
[0014] 可选地,在根据本发明的JavaScript代码保护装置中,获取模块还适于获取源代码中的函数名称;以及替换模块还适于根据映射规则用预置字符串代替函数名称,获取替换后源代码。
[0015] 可选地,在根据本发明的JavaScript代码保护装置中,预置字符串是由数字0、数字1、小写字母o、小写字母l、大写字母O组成。
[0016] 可选地,在根据本发明的JavaScript代码保护装置中,加密模块还包括:存储子模块,适于定义加密算法的偏移量;加密子模块,适于将代码片段中的所有字符值偏移所述偏移量;以及标识子模块,适于采用预定函数替换加密代码片段。
[0017] 可选地,在根据本发明的JavaScript代码保护装置中,加密模块还包括:迭代子模块,适于对代码片段进行多次迭代加密。
[0018] 可选地,在根据本发明的JavaScript代码保护装置中,校验模块适于判断加密后的代码片段中字符串长度是否等于预置长度,若等于则没有被篡改。
[0019] 可选地,在根据本发明的JavaScript代码保护装置中,校验模块还适于判断加密后的代码片段中指定位的字符是否等于预置字符,若等于则没有被篡改。
[0020] 根据本发明的JavaScript代码保护方案,按照一定的映射规则用预置字符串代替源代码中的变量名称和函数名称,利用代码混淆技术对JavaScript代码进行一层保护;而后挑选其中的代码片段,采用对字符值施加固定的偏移量的加密算法,起到掩藏函数逻辑的作用,并且可以多次迭代该加密算法;更进一步地,通过在加密后的代码片段中插入校验位来判断JavaScript代码是否被恶意篡改。所以,与现有技术相比,本方案达到了有效保护JavaScript代码的目的,同时防止JavaScript代码被盗用。附图说明
[0021] 为了实现上述以及相关目的,本文结合下面的描述和附图来描述某些说明性方面,这些方面指示了可以实践本文所公开的原理的各种方式,并且所有方面及其等效方面旨在落入所要求保护的主题的范围内。通过结合附图阅读下面的详细描述,本公开的上述以及其它目的、特征和优势将变得更加明显。遍及本公开,相同的附图标记通常指代相同的部件或元素。
[0022] 图1示出了根据本发明一个实施例的计算设备100的构造图;
[0023] 图2示出了根据本发明一个实施例的JavaScript代码保护方法200的流程图;以及[0024] 图3示出了根据本发明一个实施例的JavaScript代码保护装置300的示意图。

具体实施方式

[0025] 下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
[0026] 图1是布置为实现根据本发明的JavaScript代码保护方案的示例计算设备100的框图。在基本的配置102中,计算设备100典型地包括系统存储器106和一个或者多个处理器104。存储器总线108可以用于在处理器104和系统存储器106之间的通信。
[0027] 取决于期望的配置,处理器104可以是任何类型的处理,包括但不限于:微处理器(μP)、微控制器(μC)、数字信息处理器(DSP)或者它们的任何组合。处理器104可以包括诸如一级高速缓存110和二级高速缓存112之类的一个或者多个级别的高速缓存、处理器核心114和寄存器116。示例的处理器核心114可以包括运算逻辑单元(ALU)、浮点数单元(FPU)、数字信号处理核心(DSP核心)或者它们的任何组合。示例的存储器控制器118可以与处理器
104一起使用,或者在一些实现中,存储器控制器118可以是处理器104的一个内部部分。
[0028] 取决于期望的配置,系统存储器106可以是任意类型的存储器,包括但不限于:易失性存储器(诸如RAM)、非易失性存储器(诸如ROM、闪存等)或者它们的任何组合。系统存储器106可以包括操作系统120、一个或者多个应用122以及程序数据124。应用122可以包括被配置为支持信息发布的浏览器232。其中浏览器232可以是独立于操作系统120提供的,也可以是操作系统120自带的。在一些实施方式中,应用122可以布置为在操作系统上利用程序数据124进行操作。
[0029] 计算设备100还可以包括有助于从各种接口设备(例如,输出设备142、外设接口144和通信设备146)到基本配置102经由总线/接口控制器130的通信的接口总线140。示例的输出设备142包括图形处理单元148和音频处理单元150。它们可以被配置为有助于经由一个或者多个A/V端口152与诸如显示器或者扬声器之类的各种外部设备进行通信。示例外设接口144可以包括串行接口控制器154和并行接口控制器156,它们可以被配置为有助于经由一个或者多个I/O端口158和诸如输入设备(例如,键盘鼠标、笔、语音输入设备、触摸输入设备)或者其他外设(例如打印机扫描仪等)之类的外部设备进行通信。示例的通信设备146可以包括网络控制器160,其可以被布置为便于经由一个或者多个通信端口164与一个或者多个其他计算设备162通过网络通信链路的通信。
[0030] 网络通信链路可以是通信介质的一个示例。通信介质通常可以体现为在诸如载波或者其他传输机制之类的调制数据信号中的计算机可读指令、数据结构、程序模块,并且可以包括任何信息递送介质。“调制数据信号”可以这样的信号,它的数据集中的一个或者多个或者它的改变可以在信号中编码信息的方式进行。作为非限制性的示例,通信介质可以包括诸如有线网络或者专线网络之类的有线介质,以及诸如声音、射频(RF)、微波、红外(IR)或者其它无线介质在内的各种无线介质。这里使用的术语计算机可读介质可以包括存储介质和通信介质二者。
[0031] 计算设备100可以实现为小尺寸便携(或者移动)电子设备的一部分,这些电子设备可以是诸如蜂窝电话、个人数字助理(PDA)、个人媒体播放器设备、无线网络浏览设备、个人头戴设备、应用专用设备、或者可以包括上面任何功能的混合设备。计算设备100还可以实现为包括桌面计算机和笔记本计算机配置的个人计算机。
[0032] 图2示出了根据本发明一个实施例的JavaScript代码保护方法的流程图。参考图2,该方法始于步骤S210,获取源代码中的变量名称,根据映射规则用预置字符串代替变量名称,获取替换后源代码。本实施例中,在实现JavaScript代码的替换之前,首先获取JavaScript代码作为源代码,以便约定后续代码保护的处理对象。然后,获取源代码中的变量名称,根据本发明的实施例,计算设备100通过遍历源代码的方式获取源代码中的变量名称。具体地,变量名称描述了变量所代表的实体。由于其他用户通过理解变量名称可以进一步的理解JavaScript代码的含义,所以,本实施例获取源代码的变量名称,根据映射规则用预置字符串代替变量名称,获取替换后源代码,以达到混淆JavaScript代码的目的。
[0033] 出于同样的考虑,计算设备100也可以同时获取源代码中的函数名称,并且根据映射规则用预置字符串代替函数名称,获取替换后源代码。
[0034] 根据本发明的实施方式,预置字符串是由数字0、数字1、小写字母o、小写字母l、大写字母O组成的一定长度的名称,如l10、loO、1loO,起到混淆代码的作用,增加阅读代码的难度。
[0035] 本实施例中,在JavaScript代码中包含映射表,存储上述预置字符串与变量名称、和/或函数名称的映射规则。
[0036] 随后在步骤S220中,对经由步骤S210获取的替换后源代码中的代码片段进行加密,获取加密后源代码。实际操作中,由计算设备100随机挑选一个或多个函数作为代码片段。具体地,步骤S220在实施过程中又分为以下3步。
[0037] 首先在步骤S222中,定义加密算法的偏移量。
[0038] 随后在步骤S224中,将代码片段中的所有字符值偏移所述偏移量。实际操作中,将该代码片段当做一个字符串,每个字符都有相应的ASCII码值,将其ASCII码值作为要加密的字符值,按照步骤S222中定义的偏移量,使每个字符值产生相应偏移量。
[0039] 随后在步骤S226中,采用预定函数替换加密代码片段。根据本发明的实施例,将加密后的代码片段替换为eval()函数,例如eval(解密函数名称(“密文”)),以对加密后的代码片段作进一步的保护。
[0040] 为便于理解,以下示出了对代码片段加密的过程。待加密的代码片段(即,明文)为:
[0041] function func1(x,y){return x+y;}
[0042] 这里定义偏移量为16,对代码片段中的每个字符值偏移16,例如“f”对应的ASCII码值为102,偏移16后是118,即加密后的f=118。一方面要对所有的字符值按+16进行偏移,另一方面还要用预置字符串替换函数名称,并且把加密后的代码片段替换为eval()函数形式,由其将字符串转换为代码执行。由此得到的代码片段如下所示,其中o1lO就是在步骤S210中随机生成的对func1这个函数名称的混淆名称:
[0043] eval(o1lO(“118|133|126|115|132|121|127|126|48|118|133|126|115|65|56|136|60|137|57|48|139|130|117|132|133|130|126|48|136|48|59|48|137|75|141”))[0044] 在上述加密过程中,对字符值采用10进制的计数方式,也可以是例如16进制计数,本实施例中不做限制。
[0045] 至此,就完成了对该代码片段的一次加密。实际操作中,可以重复上述加密步骤,对代码片段进行多次迭代加密。根据一个实施方式,每一次迭代加密时的偏移量都可以不同。
[0046] 根据上述加密方式,可以掩藏JavaScript代码中的函数逻辑不被他人理解,起到保护函数逻辑的作用。
[0047] 随后在步骤S230中,判断该加密后的代码片段是否被篡改,若没有则将该加密后源代码作为受保护的源代码。对加密后的代码片段做判断,具体做法是,判断加密后的代码片段中字符串长度是否等于预置长度,若等于则没有被篡改,若不等于则表明代码有可能已经被篡改,此时直接返回NULL(或者返回该函数)以中断函数调用,由于JavaScript代码的特殊性,此时代码并不会报错,进而达到混淆的目的。同样地,也可以判断加密后的代码片段中指定位的字符是否等于预置字符,若等于则没有被篡改,若不等于也直接返回NULL以中断函数调用。
[0048] 例如,加密后的代码片段表示为:
[0049] ol0l1o=“118|133|126|115|132|121|127|126|48|118|133|126|115|65|56|136|60|137|57|48|139|130|117|132|133|130|126|48|136|48|59|48|137|75|141”;
[0050] eval(o1lO(ol0l1o))
[0051] 加入判断:
[0052]
[0053]
[0054] 图3示出了根据本发明一个实施例的JavaScript代码保护装置300的示意图。如图3所示,该装置300包括:获取模块310、替换模块320、加密模块330、以及校验模块340。
[0055] 获取模块310适于获取JavaScript代码作为源代码,同时获取源代码中的变量名称和/或函数名称。并交由与之耦接的替换模块320进行处理。
[0056] 替换模块320适于根据映射规则用预置字符串代替上述变量名称和/或函数名称,进而得到替换后源代码。其中预置字符串是由数字0、数字1、小写字母o、小写字母l、大写字母O组成的一定长度的名称,如l10、loO、1loO,起到混淆代码的作用,增加阅读代码的难度。
[0057] 以及,加密模块330适于对所述替换后源代码中的代码片段进行加密,获取加密后源代码。实际操作中,加密模块330又包括:适于定义加密算法的偏移量的存储子模块332、适于将代码片段中所有字符值进行偏移的加密子模块334、和适于采用预定函数替换加密代码片段的标识子模块336。根据一种实施方式,加密模块330还可以包括迭代子模块338,适于对该代码片段进行多次迭代加密。在基于图2的描述中,已经给出了关于代码片段加密算法的详细过程以及示例,此处将不再赘述。
[0058] 并且,校验模块340适于判断加密后的代码片段是否被篡改,若没有则将所述加密后源代码作为受保护的源代码。具体判断方法是,校验模块340适于判断加密后的代码片段中字符串长度是否等于预置长度,若等于则没有被篡改;或者,校验模块340还适于判断加密后的代码片段中指定位的字符是否等于预置字符,若等于则没有被篡改,若不等于时,则返回NULL或者返回该函数以中断函数调用,由于JavaScript代码的特殊性,此时代码并不会报错,进而达到混淆的目的。
[0059] 应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
[0060] 本领域那些技术人员应当理解在本文所公开的示例中的设备的模块或单元或组件可以布置在如该实施例中所描述的设备中,或者可替换地可以定位在与该示例中的设备不同的一个或多个设备中。前述示例中的模块可以组合为一个模块或者此外可以分成多个子模块。
[0061] 本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
[0062] A6、如A1-5中任一项所述的方法,其中判断加密后的代码片段是否被篡改的步骤包括:判断加密后的代码片段中字符串长度是否等于预置长度,若等于则没有被篡改。A7、如A1-6中任一项所述的方法,其中判断加密后的代码片段是否被篡改的步骤还包括:判断加密后的代码片段中指定位的字符是否等于预置字符,若等于则没有被篡改。
[0063] B13、如B8-12中任一项所述的装置,其中,校验模块适于判断加密后的代码片段中字符串长度是否等于预置长度,若等于则没有被篡改。B14、如B8-13中任一项所述的装置,其中,校验模块还适于判断加密后的代码片段中指定位的字符是否等于预置字符,若等于则没有被篡改。
[0064] 此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
[0065] 此外,所述实施例中的一些在此被描述成可以由计算机系统的处理器或者由执行所述功能的其它装置实施的方法或方法元素的组合。因此,具有用于实施所述方法或方法元素的必要指令的处理器形成用于实施该方法或方法元素的装置。此外,装置实施例的在此所述的元素是如下装置的例子:该装置用于实施由为了实施该发明的目的的元素所执行的功能。
[0066] 如在此所使用的那样,除非另行规定,使用序数词“第一”、“第二”、“第三”等等来描述普通对象仅仅表示涉及类似对象的不同实例,并且并不意图暗示这样被描述的对象必须具有时间上、空间上、排序方面或者以任意其它方式的给定顺序。
[0067] 尽管根据有限数量的实施例描述了本发明,但是受益于上面的描述,本技术领域内的技术人员明白,在由此描述的本发明的范围内,可以设想其它实施例。此外,应当注意,本说明书中使用的语言主要是为了可读性和教导的目的而选择的,而不是为了解释或者限定本发明的主题而选择的。因此,在不偏离所附权利要求书的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。对于本发明的范围,对本发明所做的公开是说明性的,而非限制性的,本发明的范围由所附权利要求书限定。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈