10.19678/j.issn.1000-3428.0066174
面向二进制代码的细粒度软件多样化方法
现有软件多样化方法大多需要源代码,基于编译器生成变体二进制,而对二进制代码直接进行转换时由于缺乏调试信息导致难以正确逆向,且易造成高额的性能开销.为此,提出一种面向二进制代码的细粒度软件多样化方法.通过静态二进制重写技术以函数块为单位进行重排序,随机化函数在代码段中的原始位置,同时使程序的内存片段gadgets位置发生改变,使得攻击者对程序的先验知识失效,以防御大规模代码重用攻击.为了进一步提高攻击者破解难度,对基本块内的指令进行依赖性分析,实现基本块内指令随机化,同时使得随机化后基本块的原始语义不变.性能测试结果表明,函数重排序对gadgets存活率的影响大于基本块内指令重排序,两者同时使用时程序的gadgets平均存活率为5.71%;模糊哈希算法Tlsh比较结果显示,该方法能够有效躲避同源性检测;使用工具Bindiff进行测试的结果表明,多样化后基本块内指令重排序的异构度大于函数重排序,且在基准测试集SPEC CPU2006上函数重排序和指令重排序同时使用时平均运行开销仅为3.1%,具有良好的实用性.
软件多样化、代码重用攻击、二进制重写、代码随机化、数据依赖性
50
TP391(计算技术、计算机技术)
国家自然科学基金;国家重点研发计划;国家重点研发计划
2024-01-19(万方平台首次上网日期,不代表论文的发表时间)
共7页
138-144