[发明专利]一种基于中间语言的字符串加密方法有效
申请号: | 201711089034.2 | 申请日: | 2017-11-08 |
公开(公告)号: | CN107908933B | 公开(公告)日: | 2020-08-28 |
发明(设计)人: | 马明 | 申请(专利权)人: | 北京顶象技术有限公司 |
主分类号: | G06F21/14 | 分类号: | G06F21/14;G06F8/41;H04L9/06;H04L9/08 |
代理公司: | 北京超凡志成知识产权代理事务所(普通合伙) 11371 | 代理人: | 齐云 |
地址: | 100089 北京市海淀区*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 中间 语言 字符串 加密 方法 | ||
1.一种基于中间语言的字符串加密方法,其特征在于,包括以下步骤:
步骤1、利用不同语言的前端编译器将源代码文件编译为中间代码文件;
步骤2、解析中间代码文件,遍历中间代码文件中的所有常量,提取所述常量的字符串常量;
步骤3、对步骤2提取的字符串常量加密,写入中间代码;
步骤4、为步骤2中提取出的每一个字符串常量生成解密函数;
步骤5、针对步骤2中提取出的每一个字符串常量,遍历他们在代码区的所有字符串引用,在字符串引用之前增加对其解密函数的调用;
步骤6、替换字符串引用,完成字符串加密操作;
步骤7、将以上处理后的中间代码文件编译为目标二进制文件,完成编译;
所述步骤4具体包括:
a)创建与原字符串常量相同空间大小的全局变量,用符号buffer表示,和一个1字节的全局变量,用于标识字符串常量是否已经解密,用符号flag表示,初始值置0;
b)将预编译为中间语言的C算法解密函数,插入代码区;
c)生成字符串常量解密函数,在函数体中先判断flag,若为0则开始解密:读取密文和密钥,调用C算法对应的解密函数,对字符串常量进行解密,并将解密后的明文写入buffer,然后将flag置1,避免多次解密。
2.如权利要求1所述的一种基于中间语言的字符串加密方法,其特征在于,所述步骤2提取所述常量的字符串常量包括c语言风格和objective-c语言风格两种不同格式的字符串,区分提取,具体为:
a)c语言风格字符串为字符数组格式,直接提取字符串本身;
b)如果是objective-c语言风格字符串,该字符串只是一个包含字符数组的结构体,根据结构体中的引用符号提取对应的字符数组。
3.如权利要求1所述的一种基于中间语言的字符串加密方法,其特征在于,所述步骤3具体包括:
a)提取字符串常量的值;
b)从预设的多种加密算法中,随机提取一种加密算法,用符号C表示,并随机生成密钥,对字符串常量的值进行加密,获得字符串常量值经过加密后的密文;
c)将密文和密钥保存在常量区,并删除原字符串常量。
4.如权利要求1所述的一种基于中间语言的字符串加密方法,其特征在于,所述步骤6具体包括:
a)对于C语言风格字符串,遍历原字符串的所有引用,全部替换为引用buffer;
b)对于Objective-C语言风格字符串,将其结构体中的字符数组引用替换为buffer。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京顶象技术有限公司,未经北京顶象技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201711089034.2/1.html,转载请声明来源钻瓜专利网。