[发明专利]基于编译器前端的混淆方法、存储介质及终端设备有效
申请号: | 201910716285.1 | 申请日: | 2019-08-02 |
公开(公告)号: | CN110413283B | 公开(公告)日: | 2023-05-30 |
发明(设计)人: | 方令;肖巍;龙柏林;杜洋 | 申请(专利权)人: | 北京智游网安科技有限公司 |
主分类号: | G06F8/41 | 分类号: | G06F8/41;G06F21/14 |
代理公司: | 深圳市君胜知识产权代理事务所(普通合伙) 44268 | 代理人: | 王永文 |
地址: | 100000 北京市海淀区东北旺西路8*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 编译器 前端 混淆 方法 存储 介质 终端设备 | ||
本发明公开了一种基于编译器前端的混淆方法、存储介质及终端设备,该方法包括:编译器前端分析C/C++源文件,得到相应的抽象语法树及源文件所包含的头文件;遍历抽象语法树的所有节点,检测其中复合语句的子句是否存在只有单分支的第一子句,根据检测结果插入多余控制流;创建一与源文件类型一致的空白文件;将源文件所包含的头文件按照C/C++包含头文件的语法形式输出到空白文件中,并将抽象树中属于源文件的顶级声明按照正确的语法形式输出到空白文件中。这样,通过编译器前端插入多余控制流,创建源文件同类型的空白文件,并将抽象语法树中的内容及所述头文件重新写入空白文件,使得代码保护能力和可移植性兼备。
技术领域
本发明涉及计算机应用技术领域,特别涉及一种基于编译器前端的混淆方法、存储介质及终端设备。
背景技术
传统的静态式编译器的主流设计是三段式设计,分别为前端、优化器和后端;前端用于分析源代码、检查错误,并构建特定语言的抽象语法树。抽象语法树可转化为中间层表示形式的代码,优化器和后端运行在中间层代码上;优化器在中间层代码上进行各种变换以对代码进行优化,后端将中间层代码转化成特定平台的机器指令。
在信息安全领域,代码混淆的目的是为了使代码变得更难懂,加大静态分析难度,防止软件被恶意逆向分析;插入多余控制流是混淆方法的一种,其通过往函数的控制流程中插入多余的控制流,使破解者无法利用静态分析工具重建出原始的函数控制流图;插入的控制流可能是永远也不会被执行到的,也可能是总会被执行到的,还有可能是有时会被执行、有时不会被执行的。
目前的C/C++混淆技术是基于OLLVM实现的,混淆的是中间层表示形式的代码;OLLVM(Obfuscator-LLVM)是一个开源项目,旨在提供一夽开源的针对LLVM的代码混淆工具,通过插入多余控制流,来增加逆向工程的难度;但是OLLVM混淆的结果,只能由LLVM编译器转化成相应平台的机器指令,无法移植,更不可能被其它编译器再次处理。
因而现有技术还有待改进和提高。
发明内容
本发明要解决的技术问题在于,针对现有技术的不足,提供一种基于编译器前端的混淆方法、存储介质及终端设备,以解决现有技术中OLLVM的混淆结果不能通过其他编译器编译,无法移植的问题。
为了解决上述技术问题,本发明所采用的技术方案如下:
一种基于编译器前端的混淆方法,其包括:
由编译器前端分析处理C或C++源文件,得到相应的抽象语法树及源文件包含的头文件;
遍历抽象语法树的所有节点,检测其中复合语句的子句中是否存在只有单分支的第一子句,根据检测结果插入多余控制流;
创建一个与原始源文件类型一致的C或C++空白文件;
将源文件所包含的头文件按照C或C++包含头文件的语法形式输出到空白文件中,并将抽象树中属于源文件的顶级声明按照正确的语法形式输出到空白文件中。
所述遍历抽象语法树的所有节点,检测其中复合语句的子句中是否存在只有单分支的第一子句,根据检测结果插入多余控制流具体包括:
若复合语句的子句中存在只有单分支的第一子句,则为该语句增加一个第二分支;所述第二分支的内容是随机生成的,或是从单分支拷贝过来然后稍加改动的。
所述遍历抽象语法树的所有节点,检测其中复合语句的子句中是否存在只有单分支的第一子句,根据检测结果插入多余控制流还包括:
若复合语句的子句中不存在所述第一子句,则从子句中随机选择一组不包含变量声明的第一被替换语句,创建一个第二子句来替换这组第一被替换语句。
所述第二子句的控制表达式是恒为真的不透明谓词,所述第二子句中唯一的单分支的内容即是所述第一被替换语句。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京智游网安科技有限公司,未经北京智游网安科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910716285.1/2.html,转载请声明来源钻瓜专利网。