System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及通信,特别是涉及一种代码处理方法、一种代码处理装置、相应的一种电子设备以及相应的一种计算机可读存储介质。
技术介绍
1、javascript语言诞生后,随着ajax和web技术的发展逐渐成为前端开发的重要语言,而自从v8引擎发布以来,诞生了node.js,从此javascript不再仅限于前端开发,能够跟java、php等后端语言一样进行后端开发,例如基于node.js主流的开发框架可以包括koa、express、egg等。
2、然而,当将javascript语言作为后端语言进行开发时,将会涉及较多核心的业务代码,即相比其作为前端时所涉及的简单事件处理更为核心且复杂,需要对后端node.js的重要业务代码进行加密保护。
技术实现思路
1、鉴于上述问题,提出了本专利技术实施例以便提供一种克服上述问题或者至少部分地解决上述问题的一种代码处理方法、一种代码处理装置、相应的一种电子设备以及相应的一种计算机可读存储介质。
2、本专利技术实施例公开了一种代码处理方法,所述方法包括:
3、获取项目代码,对所述项目代码进行代码混淆,得到混淆后的代码;
4、对所述混淆后的代码进行字节加密,得到字节码;
5、基于所述字节码,生成二进制文件。
6、可选地,所述项目代码的文件包括脚本文件和前端视图类文件;所述对所述项目代码进行代码混淆,得到混淆后的代码,包括:
7、对所述脚本文件进行依赖解析得到所述脚本文件的
8、对所述调用链和所述前端视图类文件进行打包,得到目标文件;
9、对所述目标文件进行代码混淆,得到混淆后的代码。
10、可选地,所述对所述目标文件进行代码混淆,得到混淆后的代码,包括:
11、对所述目标文件进行代码混淆,并在所述代码混淆的过程中对所述目标文件进行编码填充,得到混淆后的代码。
12、可选地,所述对所述目标文件进行代码混淆,包括:
13、对所述目标文件中的源代码执行如下的一项或者多项代码混淆操作:变量名混淆、函数名混淆、将源代码中的条件语句和循环结构进行转换以及压缩操作。
14、可选地,所述对所述目标文件进行编码填充,得到混淆后的代码,包括:
15、生成字符串,以及获取与所述目标文件中的源代码对应的第一字符串数组;
16、将所述字符串加入所述第一字符串数组,得到第二字符串数组;
17、对所述第二字符串数组进行编码,得到编码结果;
18、在所述编码结果中插入预设指定代码,得到混淆后的代码。
19、可选地,所述在所述编码结果中插入预设指定代码,得到混淆后的代码,包括:
20、在所述编码结果中,填充具备执行代码能力的空白函数,得到混淆后的代码;其中,所述空白函数的函数体用于插入任意所要执行的代码。
21、可选地,所述对所述混淆后的代码进行字节加密,得到字节码,包括:
22、基于所述混淆后的代码生成语法树;所述语法树用于指示所述混淆后的代码的句法结构的树形表示形式;
23、按照所述句法结构的树形表示形式对所述语法树进行编译,得到字节码。
24、可选地,所述二进制文件可执行;所述基于所述字节码,生成二进制文件,包括:
25、获取目标系统,根据所述目标系统将所述字节码生成二进制文件;
26、获取所述目标系统的运行环境,基于所述运行环境对所述二进制文件赋予相应的可执行权限,得到二进制可执行文件。
27、本专利技术实施例还公开了一种代码处理装置,所述装置包括:
28、代码混淆模块,用于获取项目代码,对所述项目代码进行代码混淆,得到混淆后的代码;
29、字节加密模块,用于对所述混淆后的代码进行字节加密,得到字节码;
30、文件生成模块,用于基于所述字节码,生成二进制文件。
31、可选地,所述项目代码的文件包括脚本文件和前端视图类文件;所述代码混淆模块包括:
32、代码混淆子模块,用于对所述脚本文件进行依赖解析得到所述脚本文件的依赖关系,基于所述依赖关系对所述脚本文件形成调用链;对所述调用链和所述前端视图类文件进行打包,得到目标文件;对所述目标文件进行代码混淆,得到混淆后的代码。
33、可选地,所述代码混淆子模块包括:
34、代码混淆单元,用于对所述目标文件进行代码混淆,并在所述代码混淆的过程中对所述目标文件进行编码填充,得到混淆后的代码。
35、可选地,所述代码混淆单元包括:
36、代码混淆子单元,用于对所述目标文件中的源代码执行如下的一项或者多项代码混淆操作:变量名混淆、函数名混淆、将源代码中的条件语句和循环结构进行转换以及压缩操作。
37、可选地,所述代码混淆单元包括:
38、编码填充子单元,用于生成字符串,以及获取与所述目标文件中的源代码对应的第一字符串数组;将所述字符串加入所述第一字符串数组,得到第二字符串数组;对所述第二字符串数组进行编码,得到编码结果;在所述编码结果中插入预设指定代码,得到混淆后的代码。所述在所述编码结果中插入预设指定代码,得到混淆后的代码的步骤可以包括:在所述编码结果中,填充具备执行代码能力的空白函数,得到混淆后的代码;其中,所述空白函数的函数体用于插入任意所要执行的代码。
39、可选地,所述字节加密模块包括:
40、字节编译子模块,用于基于所述混淆后的代码生成语法树;所述语法树用于指示所述混淆后的代码的句法结构的树形表示形式;按照所述句法结构的树形表示形式对所述语法树进行编译,得到字节码。
41、可选地,所述二进制文件可执行;所述文件生成模块包括:
42、文件编译子模块,用于获取目标系统,根据所述目标系统将所述字节码生成二进制文件;获取所述目标系统的运行环境,基于所述运行环境对所述二进制文件赋予相应的可执行权限,得到二进制可执行文件。
43、本专利技术实施例还公开了一种电子设备,包括:处理器、存储器及存储在所述存储器上并能够在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现任一项所述代码处理方法。
44、本专利技术实施例还公开了一种计算机可读存储介质,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现任一项所述代码处理方法。
45、本专利技术实施例包括以下优点:
46、在本专利技术实施例中,可以对所获取的项目代码进行代码混淆得到混淆后的代码,以及对混淆后的代码进行字节加密,从而基于所得到的字节码生成得到二进制文件。通过在对代码混淆的基础上,利用字节加密、编译等手段进一步对项目代码进行加密处理,编译生成可直接运行的二进制文件,解决简单打包或简单混淆代码就直接进行业务部署,而导致核心代码成果本文档来自技高网...
【技术保护点】
1.一种代码处理方法,其特征在于,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,所述项目代码的文件包括脚本文件和前端视图类文件;所述对所述项目代码进行代码混淆,得到混淆后的代码,包括:
3.根据权利要求2所述的方法,其特征在于,所述对所述目标文件进行代码混淆,得到混淆后的代码,包括:
4.根据权利要求2或3所述的方法,其特征在于,所述对所述目标文件进行代码混淆,包括:
5.根据权利要求3所述的方法,其特征在于,所述对所述目标文件进行编码填充,得到混淆后的代码,包括:
6.根据权利要求5所述的方法,其特征在于,所述在所述编码结果中插入预设指定代码,得到混淆后的代码,包括:
7.根据权利要求1所述的方法,其特征在于,所述对所述混淆后的代码进行字节加密,得到字节码,包括:
8.根据权利要求1或7所述的方法,其特征在于,所述二进制文件可执行;所述基于所述字节码,生成二进制文件,包括:
9.一种代码处理装置,其特征在于,所述装置包括:
10.一种电子设备,其特征在于,包括
11.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现如权利要求1至8中任一项所述代码处理方法。
...【技术特征摘要】
1.一种代码处理方法,其特征在于,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,所述项目代码的文件包括脚本文件和前端视图类文件;所述对所述项目代码进行代码混淆,得到混淆后的代码,包括:
3.根据权利要求2所述的方法,其特征在于,所述对所述目标文件进行代码混淆,得到混淆后的代码,包括:
4.根据权利要求2或3所述的方法,其特征在于,所述对所述目标文件进行代码混淆,包括:
5.根据权利要求3所述的方法,其特征在于,所述对所述目标文件进行编码填充,得到混淆后的代码,包括:
6.根据权利要求5所述的方法,其特征在于,所述在所述编码结果中插入预设指定代码,得到混淆后的代码,包括:
<...【专利技术属性】
技术研发人员:张鹏,赵炜,
申请(专利权)人:中国电信股份有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。