[发明专利]代码安全保护方法、装置、电子设备和计算机可读存储介质在审
申请号: | 201910190218.0 | 申请日: | 2019-03-13 |
公开(公告)号: | CN109948308A | 公开(公告)日: | 2019-06-28 |
发明(设计)人: | 周源;宁志斌 | 申请(专利权)人: | 智者四海(北京)技术有限公司 |
主分类号: | G06F21/14 | 分类号: | G06F21/14 |
代理公司: | 北京超凡志成知识产权代理事务所(普通合伙) 11371 | 代理人: | 李强 |
地址: | 100000 北京市海淀区*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 虚拟机 字节码 计算机可读存储介质 标记指令 代码安全 电子设备 虚拟指令 原始代码 脚本语言代码 可执行文件 反向工程 脚本语言 保密性 传统的 解释器 合并 转换 非法 | ||
1.一种代码安全保护方法,其特征在于,包括:
将脚本语言的原始代码转换为不同类型的虚拟指令;
将所述不同类型的虚拟指令编码为虚拟机字节码,所述虚拟机字节码包括用于标记指令类型的第一部分和用于标记指令数据的第二部分;
将所述虚拟机字节码与虚拟机解释器合并为第一可执行文件。
2.根据权利要求1所述的代码安全保护方法,其特征在于,所述将脚本语言的原始代码转换为不同类型的虚拟指令包括:
将所述脚本语言的原始代码解析为抽象语法树;
将所述抽象语法树进行指令拆分,转换为包含不同类型的虚拟指令的集合。
3.根据权利要求2所述的代码安全保护方法,其特征在于,所述将所述抽象语法树进行指令拆分,转换为包含不同类型的虚拟指令的集合包括:
将所述抽象语法树中的静态数据存储至静态数据数组;
将所述静态数据在所述静态数据数组中的索引号作为所述静态数据的静态数据地址;
基于所述静态数据地址来构造所述虚拟指令。
4.根据权利要求1所述的代码安全保护方法,其特征在于,所述方法还包括:通过浏览器加载运行所述第一可执行文件,利用所述虚拟机解释器从所述虚拟机字节码解析出所述不同类型的虚拟指令,对所述不同类型的虚拟指令进行执行。
5.根据权利要求1所述的代码安全保护方法,其特征在于,所述方法还包括:
对所述第一可执行文件进行压缩、混淆或加密处理,得到第二可执行文件。
6.根据权利要求5所述的代码安全保护方法,其特征在于,所述方法还包括:通过浏览器加载运行所述第二可执行文件,利用所述虚拟机解释器从所述虚拟机字节码解析出所述不同类型的虚拟指令,对所述不同类型的虚拟指令进行执行。
7.根据权利要求4或6所述的代码安全保护方法,其特征在于,所述不同类型的虚拟指令包括通用指令和脚本语言专用指令。
8.根据权利要求7所述的代码安全保护方法,其特征在于,所述虚拟机字节码包括16位二进制编码,其中,所述16位二进制编码中指定位数的高位字段构成所述第一部分,所述16位二进制编码中除所述指定位数的高位字段以外的剩余字段构成所述第二部分。
9.根据权利要求8所述的代码安全保护方法,其特征在于,所述第二部分包括标志字段、寄存器字段和数据字段,其中,所述数据字段包括数据地址或立即数。
10.根据权利要求9所述的代码安全保护方法,其特征在于,所述对所述不同类型的虚拟指令进行执行包括:
所述虚拟机解释器根据所述虚拟机字节码中所述第一部分中的指令类型和所述第二部分中的标志字段执行不同的逻辑。
11.根据权利要求10所述的代码安全保护方法,其特征在于,所述方法还包括:
所述虚拟机解释器检测每条虚拟指令执行的时间间隔,当所述时间间隔大于预定阈值时,终止所述虚拟指令的执行。
12.一种代码安全保护装置,其特征在于,包括:
转换模块,被配置为将脚本语言的原始代码转换为不同类型的虚拟指令;
编码模块,被配置为将所述不同类型的虚拟指令编码为虚拟机字节码,所述虚拟机字节码包括用于标记指令类型的第一部分和用于标记指令数据的第二部分;
合并模块,被配置为将所述虚拟机字节码与虚拟机解释器合并为第一可执行文件。
13.根据权利要求12所述的代码安全保护装置,其特征在于,所述转换模块包括:
语法分析子模块,被配置为将所述脚本语言的原始代码解析为抽象语法树;
指令转换子模块,被配置为将所述抽象语法树进行指令拆分,转换为包含不同类型的虚拟指令的集合。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于智者四海(北京)技术有限公司,未经智者四海(北京)技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910190218.0/1.html,转载请声明来源钻瓜专利网。