暂无图片
暂无图片
暂无图片
暂无图片
暂无图片
基于回调函数的控制流深度模糊模型-沙子涵,舒辉,武成岗,熊小兵,康绯.pdf
188
16页
1次
2022-05-19
免费下载
基于回调函数的控制流深度模糊模型
*
沙子
1
,
1
,武成
2
,熊小
1
,
1
1
(数学工程与先进计算国家重点实验室,河南郑州450001)
2
(中国科学院计算技术研究所,北京100190)
通信作者:舒辉,E-mail:shuhui123@126.com
摘 要:控制流是程序过程的抽象表现,对控制流进行混淆,可有效提高代码抗逆向能力.提出了控制流深度模糊
思想:针对循环结构,利用回调函数构造等价循环模型,将过程内基本块跳转变更为过程间函数调用,对抗逆向技
.综合应用控制流分析和数据流依赖性分析,建立了基于回调函数的控制流深度模糊模型,并给出功能一致性证
.为进一步增大混淆强度,设计并实现了函数调用融合算法,构造更为复杂的函数调用过程.最后,使OpenSSL
SpecInt-2000标准测试套件作为测试集,验证了模型的可行性和有效性.
关键词:深度模糊;回调函数;循环结构;数据流依赖;代码变换
中图法分类号:TP311
中文引用格式:沙子涵,舒辉,武成岗,熊小兵,康绯.基于回调函数的控制流深度模糊模型.软件学报,2022,33(5):1833–1848.
http://www.jos.org.cn/1000-9825/6197.htm
英文引用格式:ShaZH,ShuH,WuCG,XiongXB,KangF.DeepControlFlowObfuscationModelBasedonCallbackFunction.Ruan
JianXueBao/JournalofSoftware,2022,33(5):1833–1848(inChinese).http://www.jos.org.cn/1000-9825/6197.htm
Deep Control Flow Obfuscation Model Based on Callback Function
SHAZi-Han
1
,SHUHui
1
,WUCheng-Gang
2
,XIONGXiao-Bing
1
,KANGFei
1
1
(StateKeyLaboratoryofMathematicalEngineeringandAdvancedComputing,Zhengzhou450001,China)
2
(InstituteofComputingTechnology,ChineseAcademyofSciences,Beijing100190,China)
Abstract:Control flow is an abstract expression of the program process, and it is of critical significance to obfuscate the control flow to
effectively reinforce the code’s ability to resist reverse manners. This study proposes the idea of deep control flow: as for the loop
structure, the callback function is utilized to construct an equivalent loop model, and the basic block in the program process is converted
into inter-process function calling to counter reverse technology. This study comprehensively applies control flow analysis and data flow
dependency analysis to establish a deep control flow obfuscation model based on callback function and gives proof of functional
consistency. To further enhance obfuscation, the function calling fusion algorithm is designed and implemented pertinently to construct a
more sophisticated function calling process. Finally, OpenSSL and SPECint-2000 benchmark suite is used as the test set to verify the
feasibilityandeffectivenessoftheproposedmodel.
Key words:deepcontrolflow;callbackfunction;loopstructure;dataflowdependency;codetransformation
软件保护是网络安全的重要组成部分,在软件保护领域,一个关键性的研究方向在于构造有效的混淆算法.
Collberg
[1]
将代码混淆技术分4:布局混淆、数据流混淆、控制流混淆和预防性混淆.其中,对控制流混
淆算法的研究相对较多.Blazy
[2]
提出了平展控制流混淆算法,将程序中原有的嵌套循环和条件转移语句平展
,switch语句进行连接,破坏原始控制流结构.但其对流相关信息的隐藏不够彻底,算法具有可逆
[3]
.
Sharif
[4]
提出了条件混淆算法,用哈希值等价替代路径分支条件中的常量,使该常量从原程序中剥离,并利用
哈希值加密代码块以增加逆向工程的难度.但对于特定程序,条件取值集合有限,因此该算法存在被暴力猜解攻破
*
基金项目:国家重点研发计(2016YFB08011601)
收稿时间:2020-04-07;修改时间:2020-06-04,2020-10-15;采用时间:2020-10-28;jos在线出版时间:2021-11-24
软件学报ISSN1000-9825,CODENRUXUEW E-mail:jos@iscas.ac.cn
Journal of Software,2022,33(5):1833−1848[doi:10.13328/j.cnki.jos.006197] http://www.jos.org.cn
©中国科学院软件研究所版权所有. Tel:+86-10-62562563
的可能.陈喆等
[5]
提出了基于随机森林的路径分支混淆方法,将逆向分析路径的难度等价于抽取随机森林规则
的难度,防止分支信息泄露.但该算法引入大量冗余计算,影响程序运行效率.Popov
[6]
提出了一种基Linux
信号机制的二进制代码混淆技术,使用各种异常信号代码替换程序中的跳转指令,对抗静态逆向分析工具.但该技
术无法对二进制代码的路径分支进行混淆,因此不能解决软件执行过程中的信息泄露问题.
循环结构包含大量算法逻辑相关的有效信息,对循环结构进行混淆,可有效提高代码保护能力.本文在相关研
究的基础上提出了控制流深度模糊思想,:利用回调函数,将显式的循环执行转为隐式的函数调用,隐藏循环相
关的路径分支信息.传统循环通过过程内基本块跳转实现循环功能;而对于回调型循环,循环相关代码处于不同函
数内,通过过程间函数调用关系实现循环功能.本文将这种控制转移方式称为控制流的深度.深度模糊就在于利用
过程间函数调用,灵活替换传统循环,隐藏原始控制流,对抗逆向分析.围绕这一概念,本文进一步提出了函数嵌套
融合算法,使循环调用由相邻过程间转移至随机过程间,强化模型的深度特征.
本文的主要贡献在于:
(1)从控制流和数据流的角度出发,论证回调型循环与传统循环逻辑等价,并给出了等价变换方式;
(2)设计函数调用融合算法,通过随机添加冗余函数调用,构造复杂的控制流过程,提高生成程序复杂度;
(3)混淆系统实现:针对两类循环结构进行局部优化,确保模型应用前后功能一致,并通过实验验证了系统的
可行性与抗逆向分析的效果.
1 相关工作
控制流混淆的思路主要有两种:(1)破坏原始程序控制流结构;(2)采用加密等手段保护跳转信息.前者以控制
流扁平化算法为代表,对分支结构进行等价变换.在一定程度上隐藏路径信息,但不能做到完全消除,因此具有可
逆性.后者以条件混淆算法、分类器混淆算法
[7,8]
为代表,通过不可逆算法,实现跳转相关信息的彻底消除.但此
类算法应用面相对狭窄,如条件混淆算法仅对相等条件进行处理,且要求程序和用户存在交互过程,因此难以做到
广泛应用.
总体而言,当前代码混淆主要围绕过程内控制流展开,代码等价执行过程由程序本身实现.因此,本文考虑在
传统混淆算法的基础上实施改变,使混淆过程由过程内扩展至过程间,控制流转移变为程序与系统协同进行.通过
异常处理函数实施控制流混淆是这一思想的一种实现方式,Popov
[6]
,Lin
[9]
和贾春福等
[10]
在异常处理
的基础上,分别提出了自己的分支混淆方法.通过异常触发,将控制权转移到预置的异常处理函数,由系统负责跳
转执行,隐藏了条件跳转指令,实现对控制流的混淆.
然而,异常处理机制的复杂性导致控制流转移过程不完全可控,且容易引起程序安全问题.而函数回调过程相
对简单,执行流可预测.因此,本文提出了控制流深度模糊思想,通过系统回调函数,将循环结构分离至不同控制流
执行过程,同时将控制流转移过程交付系统执行,实现对程序路径信息的隐藏,对抗逆向分析.
2 回调型循环结构
回调型循环通过回调函数响应-执行机制,将基本块循环跳转变换为函数间的反复调用.EnumFonts函数
为例,该函数接受其他函数指针作为参数,Windows字体库遍历操作.对其中每个字体均调用回调函数处理,
字体库遍历过程即等价替代循环过程.
1所示,多数系统回调函数均具有如下机制:当返回值0,回调过程继续;当返回值0,回调过程
结束,程序继续运行.该机制也是实现循环控制的重要基础.
显然,传统循环转变为回调循环,代码被剥离至不同函数体内,将面临以下问题.
(1)控制转移过程是否等价,对复杂循环结构是否具有适用性;
(2)如何维持变量作用域和数据依赖关系,保证功能一致性.
要解决上述问题,首先应选取适当的回调函数,本文选取的回调函数均具有以下特点.
(1)即时响应性:执行调用者函数后,立即触发响应事件,调用回调函数;
1834 软件学报2022335
of 16
免费下载
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文档的来源(墨天轮),文档链接,文档作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

关注
最新上传
暂无内容,敬请期待...
下载排行榜
Top250 周榜 月榜