预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共37页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

(19)中华人民共和国国家知识产权局(12)发明专利申请(10)申请公布号CN114329352A(43)申请公布日2022.04.12(21)申请号202011049772.6(22)申请日2020.09.29(71)申请人腾讯科技(深圳)有限公司地址518057广东省深圳市南山区高新区科技中一路腾讯大厦35层(72)发明人陆超华周志文王永峰张元龙甘祥(74)专利代理机构广州三环专利商标代理有限公司44202代理人熊永强杜维(51)Int.Cl.G06F21/12(2013.01)权利要求书2页说明书25页附图9页(54)发明名称代码保护方法、装置、设备以及存储介质(57)摘要本申请实施例公开了一种代码保护方法、装置、设备以及存储介质,该方法包括:获取待保护代码的中间代码,并对上述中间代码进行劣化以得到目标中间代码;从上述目标中间代码中确定出重复指令组合;确定各重复指令组合对应的复合指令,并生成复合中间代码;生成上述复合中间代码中各指令的动态指令操作码,并根据上述复合中间代码中各指令、各指令对应的动态指令操作码和操作数生成指令表,其中,不同指令对应的动态指令操作码不同;基于上述指令表和上述复合中间代码生成上述复合中间代码对应的字节码。采用本发明实施例,可将代码转换为字节码,增加代码安全性。CN114329352ACN114329352A权利要求书1/2页1.一种代码保护方法,其特征在于,所述方法包括:获取待保护代码的中间代码,并对所述中间代码进行劣化以得到目标中间代码;从所述目标中间代码中确定出重复指令组合,所述重复指令组合在所述目标中间代码中出现至少两次;确定所述目标中间代码中各重复指令组合对应的复合指令,并根据所述各重复指令组合对应的复合指令以及所述目标中间代码中除重复指令组合之外的其他指令生成复合中间代码;生成所述复合中间代码中各指令的动态指令操作码,并根据所述复合中间代码中各指令、各指令对应的动态指令操作码和操作数生成指令表,其中,不同指令对应的动态指令操作码不同;基于所述指令表和所述复合中间代码生成所述复合中间代码对应的字节码。2.根据权利要求1所述的方法,其特征在于,所述方法还包括:获取虚拟机描述信息,并根据所述虚拟机描述信息和所述指令表生成用于运行所述字节码的虚拟机;其中,所述虚拟机描述信息包括寄存器数量、寄存器类型、寄存器用途、内存结构、运行栈和异常栈、运行环境的交互要求以及取指-分派-执行循环表;基于所述字节码及所述虚拟机生成交付代码。3.根据权利要求1或2所述的方法,其特征在于,所述获取待保护代码的中间代码,包括:获取待保护代码,并确定所述待保护代码对应的抽象语法树;基于所述待保护代码对应的抽象语法树编译得到所述待保护代码的中间代码。4.根据权利要求3所述的方法,其特征在于,所述从所述目标中间代码中确定出重复指令组合,包括:从所述目标中间代码中确定出指令组合及各指令组合在所述目标中间代码中的出现次数;将所述各指令组合按照所述各指令组合的出现次数进行排序,并将所述出现次数大于阈值的指令组合确定为所述重复指令组合。5.根据权利要求4所述的方法,其特征在于,所述目标中间代码中一个重复指令组合对应多个复合指令,其中,任一重复指令组合对应的复合指令的个数不超过所述任一重复指令组合在所述目标中间代码中的出现次数。6.根据权利要求3所述的方法,其特征在于,所述根据所述各重复指令组合对应的复合指令以及所述目标中间代码中除重复指令组合之外的其他指令生成复合中间代码,包括:按照所述目标中间代码中各指令在所述目标中间代码中出现的顺序,确定各重复指令组合与所述目标中间代码中除重复指令组合之外的其他指令的组合顺序;将所述目标中间代码中各重复指令组合替换为各重复指令组合对应的复合指令,并按照所述组合顺序将所述各重复指令组合对应的复合指令与所述目标中间代码中除重复指令组合之外的其他指令进行组合以生成复合中间代码。7.根据权利要求3所述的方法,其特征在于,所述对所述中间代码进行劣化,包括:在所述中间代码中插入无实际用途的指令;或者2CN114329352A权利要求书2/2页将所述中间代码中的整数或字符串常量转换为多条运算指令;或者在所述中间代码中不可达的目标地址中插入不完整的指令;或者将所述中间代码中的指令进行无副作用的顺序交换。8.一种代码保护装置,其特征在于,包括:代码获取模块,用于获取待保护代码的中间代码,并对所述中间代码进行劣化以得到目标中间代码;重复指令确定模块,用于从所述目标中间代码中确定出重复指令组合,所述重复指令组合在所述目标中间代码中出现至少两次;复合代码生成模块,用于确定所述目标中间代码中各重复指令组合对应的复合指令,并根据所述各重复指令组合对应的复合指令以及所述目标中间代码中除重复指令组合之外的其他指令生成复合中间