[发明专利]一种基于中间语言的字符串加密方法有效
申请号: | 201711089034.2 | 申请日: | 2017-11-08 |
公开(公告)号: | CN107908933B | 公开(公告)日: | 2020-08-28 |
发明(设计)人: | 马明 | 申请(专利权)人: | 北京顶象技术有限公司 |
主分类号: | G06F21/14 | 分类号: | G06F21/14;G06F8/41;H04L9/06;H04L9/08 |
代理公司: | 北京超凡志成知识产权代理事务所(普通合伙) 11371 | 代理人: | 齐云 |
地址: | 100089 北京市海淀区*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 中间 语言 字符串 加密 方法 | ||
本发明公开了一种基于中间语言的字符串加密方法,包括:将源代码文件编译为中间代码文件;提取中间代码文件中的字符串常量;对提取的字符串常量加密,写入中间代码;为字符串常量生成解密函数;遍历字符串常量在代码区的所有字符串引用,在字符串引用之前增加对其解密函数的调用;替换字符串引用,完成字符串加密操作;将处理后的中间代码文件编译为目标二进制文件,完成编译。本发明基于中间语言对字符串进行加密处理,屏蔽了前端不同开发语言、后端不同处理器架构的差异性,对源代码文件无侵入性,不需要进行平台相关的二进制文件修复工作。支持不同语言风格的字符串,实现跨语言、跨平台的特性。运行时按需动态解密,具有较强抗破解能力。
技术领域
本发明涉及计算机软件技术领域,尤其涉及一种基于中间语言的字符串加密方法。
背景技术
程序代码在被编译为可执行文件之后,在目标文件中会存在一个字符串。常量区,这个区域保存了应用程序中所使用到的所有字符串。这些字符串往往具有一定的语义性,如用于显示在软件界面上的文本,用于调试的日志信息、网络请求的URL地址等。攻击者在破解软件时,一般会使用反编译工具,将这些字符串导出,从字符串的语义中试图理解程序逻辑,并通过地址偏移找到引用这些字符串的代码片段,为后续的逆向分析提供便利。基于此,可以将程序中的字符串进行加密,在运行时动态进行解密,以防止此种从字符串明文切入的逆向分析行为,进而保护应用程序不被轻易破解。目前类似的方案主要有两种:
1)源代码预处理:手动计算加密后的字符串,在源代码中替换原字符串,并在密文字符串外面套上解密函数,用于返回解密后的原始字符串,然后在源代码中适当的位置插入解密函数。这一系列操作也可以通过自动化脚本完成,最后编译修改后的源代码。
2)二进制处理,将源代码编译成二进制文件后,修改常量区的字符串内容,然后修改代码区中引用字符串的代码,插入解密的指令,完成字符串的解密还原。
源代码预处理的方式,因为需要修改源代码,具有较强的侵入性,影响了代码的可读性,并且需要针对不同的程序开发语言开发不同的混淆脚本。
二进制处理的方式,由于不同的目标平台架构指令集各不相同,因此针对不同的架构需要预编译出不同的解密指令。并且,直接修改二进制代码,需要进行地址重定位等大量繁琐的修复工作,否则程序将无法正常执行。
发明内容
有鉴于现有技术的上述缺陷,本发明所要解决的技术问题是提供一种基于中间语言的字符串加密方法,以解决现有技术的不足。
为实现上述目的,本发明提供了一种基于中间语言的字符串加密方法,包括以下步骤:
步骤1、利用不同语言的前端编译器将源代码文件编译为中间代码文件;
步骤2、解析中间代码文件,遍历中间代码文件中的所有常量,提取所述常量的字符串常量;
步骤3、对步骤2提取的字符串常量加密,写入中间代码;
步骤4、为步骤2中提取出的每一个字符串常量生成解密函数;
步骤5、针对步骤2中提取出的每一个字符串常量,遍历他们在代码区的所有字符串引用,在字符串引用之前增加对其解密函数的调用;
步骤6、替换字符串引用,完成字符串加密操作;
步骤7、将以上处理后的中间代码文件编译为目标二进制文件,完成编译。
进一步地,所述步骤2提取所述常量的字符串常量包括c语言风格和objective-c语言风格两种不同格式的字符串,区分提取,具体为:
a)c语言风格字符串为字符数组格式,直接提取字符串本身;
b)如果是objective-c语言风格字符串,该字符串只是一个包含字符数组的结构体,根据结构体中的引用符号提取对应的字符数组。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京顶象技术有限公司,未经北京顶象技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201711089034.2/2.html,转载请声明来源钻瓜专利网。