[发明专利]一种实现字符串混淆的方法、设备及存储介质有效
申请号: | 201910897726.2 | 申请日: | 2019-09-23 |
公开(公告)号: | CN110598379B | 公开(公告)日: | 2021-06-08 |
发明(设计)人: | 方令;肖巍 | 申请(专利权)人: | 北京智游网安科技有限公司 |
主分类号: | G06F21/14 | 分类号: | G06F21/14;G06F21/60;G06F8/41 |
代理公司: | 深圳市君胜知识产权代理事务所(普通合伙) 44268 | 代理人: | 王永文 |
地址: | 100000 北京市海淀区东北旺西路8*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 实现 字符串 混淆 方法 设备 存储 介质 | ||
本发明提供一种实现字符串混淆的方法、系统、设备及存储介质,所述方法包括:分析处理源文件得到源文件对应的语法树及其包含的头文件;对语法树进行加密修改,使字符串常量进行加密,对语法树进行运行解密修改,使程序运行时字符串常量解密还原;由编译器前端根据修改后的语法树输出加密后的源代码。实现了在编译器前端混淆字符串,并能根据修改后的语法树输出得到C/C++源代码,使其可被各种编译器编译,并可被移植到各种平台,兼顾了程序的安全性和可移植性。
技术领域
本发明涉及通讯安全技术领域,尤其涉及一种实现字符串混淆的方法、设备及存储介质。
背景技术
在移动信息安全领域,代码混淆的目的是为了使代码变得更难懂,防止软件被恶意逆向分析。字符串常量,通常是一种提示信息或其它有意义的信息,逆向分析时可通过字符串常量迅速定位到程序功能的关键点,从而找到突破口,字符串混淆是一种混淆方法,它可以隐藏字符串常量,使得其在最终的二进制程序文件中不能直接观察到。如图像处理应用软件编程上,为防止恶意逆向分析,均需要实现移动信息安全。
OLLVM(Obfuscator-LLVM)是一个开源项目,旨在提供一套开源的针对LLVM(LowLevel Virtual Machine)的代码混淆工具,以增加逆向工程的难度。目前,C/C++混淆技术是基于OLLVM实现的,混淆的都是中间层表示形式的代码,混淆的结果只能由LLVM编译器转化成相应平台的机器指令,无法移植,更不可被其他编译器再次处理。
因此,现有技术有待改进和发展。
发明内容
鉴于上述现有技术的不足,本发明提供了一种实现字符串混淆的方法、系统、设备及存储介质,旨在解决现有技术OLLVM混淆中间层表示形式代码,只能由LLVM编译器转化成机器指令,无法移植无法被其他编译器再次处理的问题。
为了解决上述问题,本发明公开了一种实现字符串混淆的方法,应用于编译器前端,所述方法包括步骤:
分析处理源文件得到源文件对应的语法树及其包含的头文件;
在编译器前端对语法树进行修改处理;
由编译器前端根据修改后的语法树输出混淆后的源代码。
进一步,所述在编译器前端对语法树进行修改处理的步骤具体包括:
对语法树进行加密修改,使字符串常量进行加密;
对语法树进行运行解密修改,使程序运行时字符串常量解密还原。
进一步,所述对语法树进行加密修改,使字符串常量进行加密的步骤具体包括:
在语法树中插入第一字符数组和第二字符数组。
进一步,所述在语法树中插入第一字符数组和第二字符数组步骤具体包括:
遍历语法树,收集语法树中所有字符串常量并记录其顺序;
利用密钥对收集的字符串常量进行加密;
插入第一字符数组,第一字符数组中存储有加密后的字符串常量;插入第二字符数组,第二字符数组中存储有密钥。
进一步,所述对语法树进行运行解密修改,使程序运行时字符串常量解密还原步骤具体包括:
在语法树中插入静态的全局指针数组;
插入解密函数,所述解密函数在程序运行时对第一字符数组进行解密还原;
插入GetString函数,所述GetString函数返回其参数指定的解密后字符串常量;
遍历修改后的语法树,将语法树中字符串常量替换成GetString函数的调用。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京智游网安科技有限公司,未经北京智游网安科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910897726.2/2.html,转载请声明来源钻瓜专利网。