[发明专利]代码保护方法、代码保护装置、存储介质与电子设备有效
申请号: | 201910319634.6 | 申请日: | 2019-04-19 |
公开(公告)号: | CN110059456B | 公开(公告)日: | 2020-06-05 |
发明(设计)人: | 付存军 | 申请(专利权)人: | 同盾控股有限公司 |
主分类号: | G06F21/14 | 分类号: | G06F21/14 |
代理公司: | 北京律智知识产权代理有限公司 11438 | 代理人: | 王辉;阚梓瑄 |
地址: | 311121 浙江省杭州市余*** | 国省代码: | 浙江;33 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 代码 保护 方法 保护装置 存储 介质 电子设备 | ||
1.一种代码保护方法,其特征在于,包括:
将源代码编译为中间代码,并提取所述中间代码中的第一类函数与第二类函数;所述第一类函数包括声明函数,所述第二类函数包括实现函数;
根据所述第一类函数生成用于调用所述第一类函数的自定义函数;
在所述中间代码中,将所述第二类函数中关于所述第一类函数的调用指令替换为所述自定义函数;
将替换后的所述中间代码重新编译,得到目标代码文件;
其中,所述将源代码编译为中间代码,并提取所述中间代码中的第一类函数与第二类函数,包括:
利用LLVM将所述源代码编译为所述中间代码;
对所述LLVM的源码进行编译,得到所述LLVM的动态库;
利用所述动态库解析所述中间代码,以遍历所述中间代码中的函数,并将每个函数划分为第一类函数或第二类函数。
2.根据权利要求1所述的方法,其特征在于,所述第二类函数中的调用指令包括CallInst指令和/或InvokeInst指令。
3.根据权利要求1所述的方法,其特征在于,所述根据所述第一类函数生成用于调用所述第一类函数的自定义函数,包括:
对于每个所述第一类函数,对应生成一个自定义函数,并存储所述第一类函数与自定义函数之间的映射关系。
4.根据权利要求3所述的方法,其特征在于,所述将替换后的所述中间代码重新编译,得到目标代码文件,包括:
将替换后的所述中间代码重新编译,并根据所述映射关系添加链接,得到所述目标代码文件。
5.根据权利要求1所述的方法,其特征在于,所述自定义函数的函数名是随机生成的。
6.一种代码保护装置,其特征在于,包括:
第一编译模块,用于将源代码编译为中间代码,并提取所述中间代码中的第一类函数与第二类函数;所述第一类函数包括声明函数,所述第二类函数包括实现函数;
函数生成模块,用于根据所述第一类函数生成用于调用所述第一类函数的自定义函数;
指令替换模块,用于在所述中间代码中,将所述第二类函数中关于所述第一类函数的调用指令替换为所述自定义函数;
第二编译模块,用于将替换后的所述中间代码重新编译,得到目标代码文件;
其中,所述第一编译模块包括:
源代码编译单元,用于利用LLVM将所述源代码编译为所述中间代码;
动态库获取单元,用于对所述LLVM的源码进行编译,得到所述LLVM的动态库;
函数提取单元,用于利用所述动态库解析所述中间代码,以遍历所述中间代码中的函数,并将其中的每个函数划分为第一类函数或第二类函数。
7.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1-5任一项所述的方法。
8.一种电子设备,其特征在于,包括:
处理器;以及
存储器,用于存储所述处理器的可执行指令;
其中,所述处理器配置为经由执行所述可执行指令来执行权利要求1-5任一项所述的方法。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于同盾控股有限公司,未经同盾控股有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910319634.6/1.html,转载请声明来源钻瓜专利网。