一种JAVASCRIPT代码的混淆方法和装置.pdf

上传人:a3 文档编号:1553091 上传时间:2018-06-24 格式:PDF 页数:12 大小:2.97MB
返回 下载 相关 举报
摘要
申请专利号:

CN201310063856.9

申请日:

2013.02.28

公开号:

CN103150493A

公开日:

2013.06.12

当前法律状态:

授权

有效性:

有权

法律详情:

授权|||著录事项变更IPC(主分类):G06F 21/14变更事项:发明人变更前:王永志 谭彰 赖晓健 陈挺变更后:赖晓健 王永志 谭彰 陈挺|||实质审查的生效IPC(主分类):G06F 21/14申请日:20130228|||公开

IPC分类号:

G06F21/14(2013.01)I

主分类号:

G06F21/14

申请人:

浙江中控技术股份有限公司

发明人:

王永志; 谭彰; 赖晓健; 陈挺

地址:

310053 浙江省杭州市滨江区六和路309号中控科技园(高新区)

优先权:

专利代理机构:

北京集佳知识产权代理有限公司 11227

代理人:

王宝筠

PDF下载: PDF下载
内容摘要

本发明实施例公开了一种JavaScript代码的混淆方法和装置,所述方法包括:获取JavaScript代码作为源代码;去除所述源代码中的冗余内容后,获取处理后源代码;获取所述处理后源代码中的变量名称;用预先生成的名称替换所述变量名称后,获取替换后源代码;将所述替换后源代码进行进制变换后,获取混淆后源代码。本发明采取了保护代码的逻辑不被他人理解的方法,对JavaScript代码进行混淆,达到了有效保护JavaScript代码的目的,同时防止JavaScript代码被盗用。

权利要求书

权利要求书一种JavaScript代码的混淆方法,其特征在于,所述方法包括:
获取JavaScript代码作为源代码;
去除所述源代码中的冗余内容后,获取处理后源代码;
获取所述处理后源代码中的变量名称;
用预先生成的名称替换所述变量名称后,获取替换后源代码;
将所述替换后源代码进行进制变换后,获取混淆后源代码。
根据权利要求1所述的方法,其特征在于,所述用预先生成的名称替换所述变量名称后,获取替换后源代码之前,还包括:
通过随机算法随机生成名称。
根据权利要求1所述的方法,其特征在于,所述获取JavaScript代码的源代码,包括:
根据分隔符,将所述JavaScript代码分组存储;
获取分组存储的JavaScript代码作为源代码。
根据权利要求1所述的方法,其特征在于,所述去除所述源代码中的冗余内容后,获取处理后源代码,包括:
去除所述源代码中的注释字符和空行;
以及去除所述源代码中的回车换行和Tab符号。
根据权利要求1所述的方法,其特征在于,将所述替换后源代码进行进制变换后,获取混淆后源代码,包括:
将所述替换后源代码中的部分代码转换成16进制;
获取转换成16进制的混淆后源代码。
一种JavaScript代码的混淆装置,其特征在于,所述装置包括:
第一获取模块,用于获取JavaScript代码作为源代码;
第二获取模块,用于去除所述源代码中的冗余内容后,获取处理后源代码;
第三获取模块,用于获取所述处理后源代码中的变量名称;
第四获取模块,用于将所述变量名称替换为预先生成的名称后,获取替换后源代码;
第五获取模块,用于将所述替换后源代码进行进制变换后,获取混淆后源代码。
根据权利要求6所述的装置,其特征在于,所述装置还包括:
生成模块,用于通过随机算法随机生成名称。
根据权利要求6所述的装置,其特征在于,所述第一获取模块包括:
存储子模块,用于根据分隔符,将所述JavaScript代码分组存储;
第一获取子模块,用于获取分组存储的JavaScript代码作为源代码。
根据权利要求6所述的装置,其特征在于,所述第二获取模块包括:
第一去除子模块,用于去除所述源代码中的注释字符和空行;
第二去除子模块,用于去除所述源代码中的回车换行和Tab符号。
根据权利要求6所述的装置,其特征在于,所述第五获取模块包括:
替换子模块,用于将所述替换后源代码转换成16进制;
第二获取子模块,用于获取转换成16进制的混淆后源代码。

说明书

说明书一种JavaScript代码的混淆方法和装置
技术领域
本发明涉及网络技术领域,具体涉及一种JavaScript代码的混淆方法和装置。
背景技术
JavaScript是一种跨平台的开放式脚本描述语言,同时是一种解释执行的脚本语言,主要应用于网络领域的客户端浏览器中。由于JavaScript需要解释执行的特点,所以JavaScript代码,即用JavaScript语言编写的代码,必须被明文下载到客户端,这使得以明文形式显示的JavaScript代码很容易被他人盗用,不能得到保护。随着JavaScript语言在网络应用领域的作用日趋重要,JavaScript代码的复杂性、功能性和技术含量也越来越高,所以对JavaScript代码保护技术的需求也日趋迫切。
JavaScript代码混淆技术是现有技术的代码保护方法,在JavaScript代码被下载到客户端的过程中,将JavaScript代码混淆。现有技术中存在两种JavaScript代码混淆的方法,第一种方法是利用JavaScript中的escape()函数对JavaScript代码进行加密,同时可以使用unescape()函数对加密后的JavaScript代码进行解密。第二种方法是首先将JavaScript代码中的换行符去除,其次将去除换行符的JavaScript代码中的变量名称用随机名称进行替换。
现有技术的第一种方法中,由于JavaScript中的escape()函数和unescape()函数众所周知,所以利用第一种方法对JavaScript代码进行混淆不能使其安全性得到保障。运用第二种方法对JavaScript代码进行混淆后,获取的JavaScript代码中除了被替换的变量名称仍存在本领域技术人员可读取的有意义的字符,所以该方法仍然不能有效地保护JavaScript代码。
发明内容
为了防止JavaScript代码被盗用,同时有效的保护JavaScript代码,本发明提供了一种JavaScript代码的混淆方法和装置。
本发明提供一种JavaScript代码的混淆方法,所述方法包括:
获取JavaScript代码作为源代码;
去除所述源代码中的冗余内容后,获取处理后源代码;
获取所述处理后源代码中的变量名称;
用预先生成的名称替换所述变量名称后,获取替换后源代码;
将所述替换后源代码进行进制变换后,获取混淆后源代码。
优选地,所述用预先生成的名称替换所述变量名称后,获取替换后源代码之前,还包括:
通过随机算法随机生成名称。
优选地,所述获取JavaScript代码的源代码,包括:
根据分隔符,将所述JavaScript代码分组存储;
获取分组存储的JavaScript代码作为源代码。
优选地,所述去除所述源代码中的冗余内容后,获取处理后源代码,包括:
去除所述源代码中的注释字符和空行;
以及去除所述源代码中的回车换行和Tab符号。
优选地,将所述替换后源代码进行进制变换后,获取混淆后源代码,包括:
将所述替换后源代码转换成16进制;
获取转换成16进制的混淆后源代码。
本发明还提供一种JavaScript代码的混淆装置,所述装置包括:
第一获取模块,用于获取JavaScript代码作为源代码;
第二获取模块,用于去除所述源代码中的冗余内容后,获取处理后源代码;
第三获取模块,用于获取所述处理后源代码中的变量名称;
第四获取模块,用于将所述变量名称替换为预先生成的名称后,获取替换后源代码;
第五获取模块,用于将所述替换后源代码进行进制变换后,获取混淆后源代码。
优选地,所述装置还包括:
生成模块,用于通过随机算法随机生成名称。
优选地,所述第一获取模块包括:
存储子模块,用于根据分隔符,将所述JavaScript代码分组存储;
第一获取子模块,用于获取分组存储的JavaScript代码作为源代码。
优选地,所述第二获取模块包括:
第一去除子模块,用于去除所述源代码中的注释字符和空行;
第二去除子模块,用于去除所述源代码中的回车换行和Tab符号。
优选地,所述第五获取模块包括:
替换子模块,用于将所述替换后源代码转换成16进制;
第二获取子模块,用于获取转换成16进制的混淆后源代码。
与现有技术相比,本发明首先获取JavaScript代码作为源代码;其次,去除源代码中的冗余内容后,获取处理后源代码;再次,获取所述处理后源代码中的变量名称;用预先生成的名称替换所述变量名称后,获取替换后源代码;最后,将所述替换后源代码进行进制变换后,获取混淆后源代码。本发明采取了保护代码的逻辑不被他人理解的方法,对JavaScript代码进行混淆,达到了有效保护JavaScript代码的目的,同时防止JavaScript代码被盗用。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例一的JavaScript代码的混淆方法流程图;
图2为本发明实施例二的JavaScript代码的混淆装置结构图;
图3为本发明实施例二的所述第一获取模块201的结构图;
图4为本发明实施例二的所述第二获取模块202的结构图;
图5为本发明实施例二的所述第五获取模块206的结构图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
实施例一、
参考图1,图1为本发明提供的一种JavaScript代码的混淆方法实施例一的流程图,本实施例具体可以包括:
步骤101、获取JavaScript代码作为源代码。
本实施例中,在实现JavaScript代码的混淆之前,首先获取JavaScript代码作为源代码,以便确定后续代码混淆的处理对象。
以如下源代码为例,具体源代码为:


实际操作中,可以以JavaScript代码中的分隔符作为标志读取JavaScript代码,同时将读取的JavaScript代码以字符串的形式存储于字符串数组中,以便后续步骤对JavaScript代码进行混淆处理。
具体的,JavaScript代码中的分隔符用来标识字符分隔的位置。例如“,”、“?”、“()”或者“@”都可以作为JavaScript代码中的分隔符。同时,字符串数组中分别存储了以分隔符分隔开的JavaScript代码的部分代码,以下步骤是对存储于字符串数组中的JavaScript代码的混淆处理。
步骤102、去除所述源代码中的冗余内容后,获取处理后源代码。
本实施例中,由于获取的JavaScript代码的源代码中存在冗余内容,在计算机执行JavaScript代码的过程中,该冗余内容不影响JavaScript代码的运行,同时会便于其他用户理解该JavaScript代码更容易,正是由于其便于其他用户理解该JavaScript代码,所以为了保护该JavaScript代码不被其他用户盗用,预先将JavaScript代码的源代码中的冗余内容去除,同时将去除了冗余内容的源代码作为处理后源代码。
具体的,JavaScript代码的源代码中的冗余内容可以是解释代码含义的注释、空行、回车换行和Tab符号等,去除此类冗余内容使其他用户不容易从JavaScript代码的注释或者代码格式方面理解该JavaScript代码的含义。
实际操作中,JavaScript代码中处于与“//”同一行且位于“//”之后的内容是JavaScript代码中的注释,同时位于“/*”与“*/”之间的内容也为JavaScript代码中的注释,所以,计算机在识别到“//”或者“/*”与“*/”后,即可确定注释的内容。
具体的,上述步骤101中的源代码经过本步骤处理后的,获取的处理后源代码如下:

步骤103、获取所述处理后源代码中的变量名称。
本实施例中,首先将去除冗余内容的JavaScript代码的源代码确定为处理后源代码,其次,获取处理后源代码中的变量名称,以便后续步骤对其进行处理。
实际操作中,计算机可以通过遍历处理后源代码的方式,获取处理后源代码中的变量名称。步骤102的例子所获取到的处理后源代码中的变量名称为ajax。
具体的,变量名称描述了变量所代表的实体。由于其他用户通过理解变量名称可以进一步的理解JavaScript代码的含义,所以,本实施例获取该JavaScript代码的源代码的变量名称,以便对其进行处理,从而进一步的达到混淆JavaScript代码的目的。
步骤104、用预先生成的名称替换所述变量名称后,获取替换后源代码。
本实施例中,首先生成不能体现JavaScript代码中的变量的真实含义的名称,其次,用生成的名称替换JavaScript代码的源代码中的变量名称,最后,确定经过名称替换后的JavaScript代码的源代码为替换后源代码。
实际操作中,不能体现JavaScript代码中的变量的真实含义的名称可以通过随机算法生成,该随机算法可以是HASH算法,具体的通过何种方式生成用于替换变量名称的名称,在本实施例中不做限制。
具体的,本步骤以生成的随机变量E1为例,用随机变量E1替换预先获取到的变量名称ajax,所以,步骤102中的处理后源代码经过本步骤处理后,获取替换后源代码,具体如下:
functionInitAjax(){varE1=false;try{E1=newActiveXObject(″Msxml2.XMLHTT P″);}catch(e){try{E1=newActiveXObject(″Microsoft.XMLHTTP″);}catch(e){E1=false;}}if(!E1&&typeofXMLHttpRequest!=′undefined′){E1=newXMLHttpRequest();E1[″setRequestHeader″](″Content‑Type″,″application/x‑www‑form‑urlencoded″);}return E1;};
步骤105、将所述替换后源代码进行进制变换后,获取混淆后源代码。
本实施例中,首先获取经过上述步骤混淆后的替换后源代码,其次,将该替换后源代码进行进制转换,最后,将经过进制转换后的替换后源代码确定为最终的混淆后源代码。
具体的,替换后源代码中的window内置对象、eval后的字符串、引号(包括双引号和单引号)内字符串和引用对象需要进行进制转换。
具体的,步骤104中的替换后源代码经过本步骤处理后,获取混淆后源代码,具体如下:
functionInitAjax(){varE1=false;try{E1=newActiveXObject(″\x4d\x73\x78\x6d\x6c\x32\x2e\x58\x4d\x4c\x48\x54\x54\x50″);}catch(e){try{E1=newActiveXObject(″\x4d\x69\x63\x72\x6f\x73\x6f\x66\x74\x2e\x58\x4d\x4c\x48\x54\x5\x50″);}catch(e){E1=false;}}if(!E1&&typeofXMLHttpRequest!=′\x75\x6e\x64\x65\x66\x69\x6e\x65\x64′){E1=newXMLHttpRequest();E1[″\x73\x65\x74\x52\x65\x71\x75\x65\x73\x74\x48\x65\x61\x64\x65\x72″](″\x43\x6f\x6e\x74\x65\x6e\x74\x2d\x54\x79\x70\x65″,″\x61\x70\x70\x6c\x69\x63\x61\x74\x69\x6f\x6e\x2f\x78\x2d\x77\x77\x77\x2d\x66\x6f\x72\x6d\x2d\x75\x72\x6c\x65\x6e\x63\x6f\x64\x65\x64″);}return E1;};
实际操作中,可以将替换后源代码中的window内置对象、eval后的字符串、引号(包括双引号和单引号)内字符串和引用对象转换成16进制或者8进制,具体的转换成几进制,本实施例中不做限制。
与现有技术相比,本实施例中首先获取JavaScript代码作为源代码;其次,去除源代码中的冗余内容后,获取处理后源代码;再次,获取所述处理后源代码中的变量名称;用预先生成的名称替换所述变量名称后,获取替换后源代码;最后,将所述替换后源代码进行进制变换后,获取混淆后源代码。本发明采取了保护代码的逻辑不被他人理解的方法,对JavaScript代码进行混淆,达到了有效保护JavaScript代码的目的,同时防止JavaScript代码被盗用。
实施例二、
参考图2,图2为本发明提供的一种JavaScript代码的混淆装置实施例二的装置结构图,本实施例具体可以包括:
第一获取模块201,用于获取JavaScript代码作为源代码;
参考图3,图3为所述第一获取模块201的结构图,所述第一获取模块201包括:
存储子模块301,用于根据分隔符,将所述JavaScript代码分组存储;
第一获取子模块302,用于获取分组存储的JavaScript代码作为源代码。
第二获取模块202,用于去除所述源代码中的冗余内容后,获取处理后源代码;
参考图4,图4为所述第二获取模块202的结构图,所述第二获取模块202包括:
第一去除子模块401,用于去除所述源代码中的注释字符和空行;
第二去除子模块402,用于去除所述源代码中的回车换行和Tab符号。
第三获取模块203,用于获取所述处理后源代码中的变量名称;
生成模块204,用于通过随机算法随机生成名称。
第四获取模块205,用于将所述变量名称替换为预先生成的名称后,获取替换后源代码;
第五获取模块206,用于将所述替换后源代码进行进制变换后,获取混淆后源代码。
参考图5,图5为所述第五获取模块206的结构图,所述第五获取模块206包括:
替换子模块501,用于将所述替换后源代码中的部分代码转换成16进制;
第二获取子模块502,用于获取转换成16进制的混淆后源代码。
与现有技术相比,本实施例中首先获取JavaScript代码作为源代码;其次,去除源代码中的冗余内容后,获取处理后源代码;再次,获取所述处理后源代码中的变量名称;用预先生成的名称替换所述变量名称后,获取替换后源代码;最后,将所述替换后源代码进行进制变换后,获取混淆后源代码。本发明采取了保护代码的逻辑不被他人理解的方法,对JavaScript代码进行混淆,达到了有效保护JavaScript代码的目的,同时防止JavaScript代码被盗用。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个......”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上对本发明实施例所提供的JavaScript代码的混淆方法和装置进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

一种JAVASCRIPT代码的混淆方法和装置.pdf_第1页
第1页 / 共12页
一种JAVASCRIPT代码的混淆方法和装置.pdf_第2页
第2页 / 共12页
一种JAVASCRIPT代码的混淆方法和装置.pdf_第3页
第3页 / 共12页
点击查看更多>>
资源描述

《一种JAVASCRIPT代码的混淆方法和装置.pdf》由会员分享,可在线阅读,更多相关《一种JAVASCRIPT代码的混淆方法和装置.pdf(12页珍藏版)》请在专利查询网上搜索。

1、(10)申请公布号 CN 103150493 A(43)申请公布日 2013.06.12CN103150493A*CN103150493A*(21)申请号 201310063856.9(22)申请日 2013.02.28G06F 21/14(2013.01)(71)申请人浙江中控技术股份有限公司地址 310053 浙江省杭州市滨江区六和路309号中控科技园(高新区)(72)发明人王永志 谭彰 赖晓健 陈挺(74)专利代理机构北京集佳知识产权代理有限公司 11227代理人王宝筠(54) 发明名称一种JavaScript代码的混淆方法和装置(57) 摘要本发明实施例公开了一种JavaScript代。

2、码的混淆方法和装置,所述方法包括:获取JavaScript代码作为源代码;去除所述源代码中的冗余内容后,获取处理后源代码;获取所述处理后源代码中的变量名称;用预先生成的名称替换所述变量名称后,获取替换后源代码;将所述替换后源代码进行进制变换后,获取混淆后源代码。本发明采取了保护代码的逻辑不被他人理解的方法,对JavaScript代码进行混淆,达到了有效保护JavaScript代码的目的,同时防止JavaScript代码被盗用。(51)Int.Cl.权利要求书1页 说明书9页 附图1页(19)中华人民共和国国家知识产权局(12)发明专利申请权利要求书1页 说明书9页 附图1页(10)申请公布号 。

3、CN 103150493 ACN 103150493 A1/1页21.一种JavaScript代码的混淆方法,其特征在于,所述方法包括:获取JavaScript代码作为源代码;去除所述源代码中的冗余内容后,获取处理后源代码;获取所述处理后源代码中的变量名称;用预先生成的名称替换所述变量名称后,获取替换后源代码;将所述替换后源代码进行进制变换后,获取混淆后源代码。2.根据权利要求1所述的方法,其特征在于,所述用预先生成的名称替换所述变量名称后,获取替换后源代码之前,还包括:通过随机算法随机生成名称。3.根据权利要求1所述的方法,其特征在于,所述获取JavaScript代码的源代码,包括:根据分隔。

4、符,将所述JavaScript代码分组存储;获取分组存储的JavaScript代码作为源代码。4.根据权利要求1所述的方法,其特征在于,所述去除所述源代码中的冗余内容后,获取处理后源代码,包括:去除所述源代码中的注释字符和空行;以及去除所述源代码中的回车换行和Tab符号。5.根据权利要求1所述的方法,其特征在于,将所述替换后源代码进行进制变换后,获取混淆后源代码,包括:将所述替换后源代码中的部分代码转换成16进制;获取转换成16进制的混淆后源代码。6.一种JavaScript代码的混淆装置,其特征在于,所述装置包括:第一获取模块,用于获取JavaScript代码作为源代码;第二获取模块,用于去。

5、除所述源代码中的冗余内容后,获取处理后源代码;第三获取模块,用于获取所述处理后源代码中的变量名称;第四获取模块,用于将所述变量名称替换为预先生成的名称后,获取替换后源代码;第五获取模块,用于将所述替换后源代码进行进制变换后,获取混淆后源代码。7.根据权利要求6所述的装置,其特征在于,所述装置还包括:生成模块,用于通过随机算法随机生成名称。8.根据权利要求6所述的装置,其特征在于,所述第一获取模块包括:存储子模块,用于根据分隔符,将所述JavaScript代码分组存储;第一获取子模块,用于获取分组存储的JavaScript代码作为源代码。9.根据权利要求6所述的装置,其特征在于,所述第二获取模块。

6、包括:第一去除子模块,用于去除所述源代码中的注释字符和空行;第二去除子模块,用于去除所述源代码中的回车换行和Tab符号。10.根据权利要求6所述的装置,其特征在于,所述第五获取模块包括:替换子模块,用于将所述替换后源代码转换成16进制;第二获取子模块,用于获取转换成16进制的混淆后源代码。权 利 要 求 书CN 103150493 A1/9页3一种 JavaScript 代码的混淆方法和装置技术领域0001 本发明涉及网络技术领域,具体涉及一种JavaScript代码的混淆方法和装置。背景技术0002 JavaScript是一种跨平台的开放式脚本描述语言,同时是一种解释执行的脚本语言,主要应用。

7、于网络领域的客户端浏览器中。由于JavaScript需要解释执行的特点,所以JavaScript代码,即用JavaScript语言编写的代码,必须被明文下载到客户端,这使得以明文形式显示的JavaScript代码很容易被他人盗用,不能得到保护。随着JavaScript语言在网络应用领域的作用日趋重要,JavaScript代码的复杂性、功能性和技术含量也越来越高,所以对JavaScript代码保护技术的需求也日趋迫切。0003 JavaScript代码混淆技术是现有技术的代码保护方法,在JavaScript代码被下载到客户端的过程中,将JavaScript代码混淆。现有技术中存在两种JavaSc。

8、ript代码混淆的方法,第一种方法是利用JavaScript中的escape()函数对JavaScript代码进行加密,同时可以使用unescape()函数对加密后的JavaScript代码进行解密。第二种方法是首先将JavaScript代码中的换行符去除,其次将去除换行符的JavaScript代码中的变量名称用随机名称进行替换。0004 现有技术的第一种方法中,由于JavaScript中的escape()函数和unescape()函数众所周知,所以利用第一种方法对JavaScript代码进行混淆不能使其安全性得到保障。运用第二种方法对JavaScript代码进行混淆后,获取的JavaScri。

9、pt代码中除了被替换的变量名称仍存在本领域技术人员可读取的有意义的字符,所以该方法仍然不能有效地保护JavaScript代码。发明内容0005 为了防止JavaScript代码被盗用,同时有效的保护JavaScript代码,本发明提供了一种JavaScript代码的混淆方法和装置。0006 本发明提供一种JavaScript代码的混淆方法,所述方法包括:0007 获取JavaScript代码作为源代码;0008 去除所述源代码中的冗余内容后,获取处理后源代码;0009 获取所述处理后源代码中的变量名称;0010 用预先生成的名称替换所述变量名称后,获取替换后源代码;0011 将所述替换后源代码。

10、进行进制变换后,获取混淆后源代码。0012 优选地,所述用预先生成的名称替换所述变量名称后,获取替换后源代码之前,还包括:0013 通过随机算法随机生成名称。0014 优选地,所述获取JavaScript代码的源代码,包括:0015 根据分隔符,将所述JavaScript代码分组存储;说 明 书CN 103150493 A2/9页40016 获取分组存储的JavaScript代码作为源代码。0017 优选地,所述去除所述源代码中的冗余内容后,获取处理后源代码,包括:0018 去除所述源代码中的注释字符和空行;0019 以及去除所述源代码中的回车换行和Tab符号。0020 优选地,将所述替换后源。

11、代码进行进制变换后,获取混淆后源代码,包括:0021 将所述替换后源代码转换成16进制;0022 获取转换成16进制的混淆后源代码。0023 本发明还提供一种JavaScript代码的混淆装置,所述装置包括:0024 第一获取模块,用于获取JavaScript代码作为源代码;0025 第二获取模块,用于去除所述源代码中的冗余内容后,获取处理后源代码;0026 第三获取模块,用于获取所述处理后源代码中的变量名称;0027 第四获取模块,用于将所述变量名称替换为预先生成的名称后,获取替换后源代码;0028 第五获取模块,用于将所述替换后源代码进行进制变换后,获取混淆后源代码。0029 优选地,所述。

12、装置还包括:0030 生成模块,用于通过随机算法随机生成名称。0031 优选地,所述第一获取模块包括:0032 存储子模块,用于根据分隔符,将所述JavaScript代码分组存储;0033 第一获取子模块,用于获取分组存储的JavaScript代码作为源代码。0034 优选地,所述第二获取模块包括:0035 第一去除子模块,用于去除所述源代码中的注释字符和空行;0036 第二去除子模块,用于去除所述源代码中的回车换行和Tab符号。0037 优选地,所述第五获取模块包括:0038 替换子模块,用于将所述替换后源代码转换成16进制;0039 第二获取子模块,用于获取转换成16进制的混淆后源代码。0。

13、040 与现有技术相比,本发明首先获取JavaScript代码作为源代码;其次,去除源代码中的冗余内容后,获取处理后源代码;再次,获取所述处理后源代码中的变量名称;用预先生成的名称替换所述变量名称后,获取替换后源代码;最后,将所述替换后源代码进行进制变换后,获取混淆后源代码。本发明采取了保护代码的逻辑不被他人理解的方法,对JavaScript代码进行混淆,达到了有效保护JavaScript代码的目的,同时防止JavaScript代码被盗用。附图说明0041 为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些。

14、实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。0042 图1为本发明实施例一的JavaScript代码的混淆方法流程图;0043 图2为本发明实施例二的JavaScript代码的混淆装置结构图;说 明 书CN 103150493 A3/9页50044 图3为本发明实施例二的所述第一获取模块201的结构图;0045 图4为本发明实施例二的所述第二获取模块202的结构图;0046 图5为本发明实施例二的所述第五获取模块206的结构图。具体实施方式0047 下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描。

15、述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。0048 实施例一、0049 参考图1,图1为本发明提供的一种JavaScript代码的混淆方法实施例一的流程图,本实施例具体可以包括:0050 步骤101、获取JavaScript代码作为源代码。0051 本实施例中,在实现JavaScript代码的混淆之前,首先获取JavaScript代码作为源代码,以便确定后续代码混淆的处理对象。0052 以如下源代码为例,具体源代码为:0053 说 明 书CN 103150493 A4。

16、/9页60054 说 明 书CN 103150493 A5/9页70055 实际操作中,可以以JavaScript代码中的分隔符作为标志读取JavaScript代码,同时将读取的JavaScript代码以字符串的形式存储于字符串数组中,以便后续步骤对JavaScript代码进行混淆处理。0056 具体的,JavaScript代码中的分隔符用来标识字符分隔的位置。例如“,”、“?”、“()”或者“”都可以作为JavaScript代码中的分隔符。同时,字符串数组中分别存储了以分隔符分隔开的JavaScript代码的部分代码,以下步骤是对存储于字符串数组中的JavaScript代码的混淆处理。005。

17、7 步骤102、去除所述源代码中的冗余内容后,获取处理后源代码。0058 本实施例中,由于获取的JavaScript代码的源代码中存在冗余内容,在计算机执行JavaScript代码的过程中,该冗余内容不影响JavaScript代码的运行,同时会便于其他用户理解该JavaScript代码更容易,正是由于其便于其他用户理解该JavaScript代码,所以为了保护该JavaScript代码不被其他用户盗用,预先将JavaScript代码的源代码中的冗余内容去除,同时将去除了冗余内容的源代码作为处理后源代码。0059 具体的,JavaScript代码的源代码中的冗余内容可以是解释代码含义的注释、空行、。

18、回车换行和Tab符号等,去除此类冗余内容使其他用户不容易从JavaScript代码的注释或者代码格式方面理解该JavaScript代码的含义。0060 实际操作中,JavaScript代码中处于与“/”同一行且位于“/”之后的内容是JavaScript代码中的注释,同时位于“/*”与“*/”之间的内容也为JavaScript代码中的注释,所以,计算机在识别到“/”或者“/*”与“*/”后,即可确定注释的内容。0061 具体的,上述步骤101中的源代码经过本步骤处理后的,获取的处理后源代码如下:0062 说 明 书CN 103150493 A6/9页80063 步骤103、获取所述处理后源代码中。

19、的变量名称。0064 本实施例中,首先将去除冗余内容的JavaScript代码的源代码确定为处理后源代码,其次,获取处理后源代码中的变量名称,以便后续步骤对其进行处理。0065 实际操作中,计算机可以通过遍历处理后源代码的方式,获取处理后源代码中的变量名称。步骤102的例子所获取到的处理后源代码中的变量名称为ajax。0066 具体的,变量名称描述了变量所代表的实体。由于其他用户通过理解变量名称可说 明 书CN 103150493 A7/9页9以进一步的理解JavaScript代码的含义,所以,本实施例获取该JavaScript代码的源代码的变量名称,以便对其进行处理,从而进一步的达到混淆Ja。

20、vaScript代码的目的。0067 步骤104、用预先生成的名称替换所述变量名称后,获取替换后源代码。0068 本实施例中,首先生成不能体现JavaScript代码中的变量的真实含义的名称,其次,用生成的名称替换JavaScript代码的源代码中的变量名称,最后,确定经过名称替换后的JavaScript代码的源代码为替换后源代码。0069 实际操作中,不能体现JavaScript代码中的变量的真实含义的名称可以通过随机算法生成,该随机算法可以是HASH算法,具体的通过何种方式生成用于替换变量名称的名称,在本实施例中不做限制。0070 具体的,本步骤以生成的随机变量E1为例,用随机变量E1替换。

21、预先获取到的变量名称ajax,所以,步骤102中的处理后源代码经过本步骤处理后,获取替换后源代码,具体如下:0071 functionInitAjax()varE1false;tryE1newActiveXObject(Msxml2.XMLHTT P);catch(e)tryE1newActiveXObject(Microsoft.XMLHTTP);catch(e)E1false;if(!E1&typeofXMLHttpRequest!undefined)E1newXMLHttpRequest();E1setRequestHeader(Content-Type,application/x-ww。

22、w-form-urlencoded);return E1;0072 步骤105、将所述替换后源代码进行进制变换后,获取混淆后源代码。0073 本实施例中,首先获取经过上述步骤混淆后的替换后源代码,其次,将该替换后源代码进行进制转换,最后,将经过进制转换后的替换后源代码确定为最终的混淆后源代码。0074 具体的,替换后源代码中的window内置对象、eval后的字符串、引号(包括双引号和单引号)内字符串和引用对象需要进行进制转换。0075 具体的,步骤104中的替换后源代码经过本步骤处理后,获取混淆后源代码,具体如下:0076 functionInitAjax()varE1false;tryE1。

23、newActiveXObject(x4dx73x78x6dx6cx32x2ex58x4dx4cx48x54x54x50);catch(e)tryE1newActiveXObject(x4dx69x63x72x6fx73x6fx66x74x2ex58x4dx4cx48x54x5x50);catch(e)E1false;if(!E1&typeofXMLHttpRequest!x75x6ex64x65x66x69x6ex65x64)E1newXMLHttpRequest();E1x73x65x74x52x65x71x75x65x73x74x48x65x61x64x65x72(x43x6fx6ex74。

24、x65x6ex74x2dx54x79x70x65,x61x70x70x6cx69x63x61x74x69x6fx6ex2fx78x2dx77x77x77x2dx66x6fx72x6dx2dx75x72x6cx65x6ex63x6fx64x65x64);return E1;0077 实际操作中,可以将替换后源代码中的window内置对象、eval后的字符串、引号(包括双引号和单引号)内字符串和引用对象转换成16进制或者8进制,具体的转换成几进制,本实施例中不做限制。0078 与现有技术相比,本实施例中首先获取JavaScript代码作为源代码;其次,去除源代码中的冗余内容后,获取处理后源代码;再。

25、次,获取所述处理后源代码中的变量名称;用预先生成的名称替换所述变量名称后,获取替换后源代码;最后,将所述替换后源代码进说 明 书CN 103150493 A8/9页10行进制变换后,获取混淆后源代码。本发明采取了保护代码的逻辑不被他人理解的方法,对JavaScript代码进行混淆,达到了有效保护JavaScript代码的目的,同时防止JavaScript代码被盗用。0079 实施例二、0080 参考图2,图2为本发明提供的一种JavaScript代码的混淆装置实施例二的装置结构图,本实施例具体可以包括:0081 第一获取模块201,用于获取JavaScript代码作为源代码;0082 参考图3。

26、,图3为所述第一获取模块201的结构图,所述第一获取模块201包括:0083 存储子模块301,用于根据分隔符,将所述JavaScript代码分组存储;0084 第一获取子模块302,用于获取分组存储的JavaScript代码作为源代码。0085 第二获取模块202,用于去除所述源代码中的冗余内容后,获取处理后源代码;0086 参考图4,图4为所述第二获取模块202的结构图,所述第二获取模块202包括:0087 第一去除子模块401,用于去除所述源代码中的注释字符和空行;0088 第二去除子模块402,用于去除所述源代码中的回车换行和Tab符号。0089 第三获取模块203,用于获取所述处理后。

27、源代码中的变量名称;0090 生成模块204,用于通过随机算法随机生成名称。0091 第四获取模块205,用于将所述变量名称替换为预先生成的名称后,获取替换后源代码;0092 第五获取模块206,用于将所述替换后源代码进行进制变换后,获取混淆后源代码。0093 参考图5,图5为所述第五获取模块206的结构图,所述第五获取模块206包括:0094 替换子模块501,用于将所述替换后源代码中的部分代码转换成16进制;0095 第二获取子模块502,用于获取转换成16进制的混淆后源代码。0096 与现有技术相比,本实施例中首先获取JavaScript代码作为源代码;其次,去除源代码中的冗余内容后,获。

28、取处理后源代码;再次,获取所述处理后源代码中的变量名称;用预先生成的名称替换所述变量名称后,获取替换后源代码;最后,将所述替换后源代码进行进制变换后,获取混淆后源代码。本发明采取了保护代码的逻辑不被他人理解的方法,对JavaScript代码进行混淆,达到了有效保护JavaScript代码的目的,同时防止JavaScript代码被盗用。0097 对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。0098 需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要说 明 书CN 103150493 A10。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 >


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1