信息网络安全 ›› 2021, Vol. 21 ›› Issue (7): 17-26.doi: 10.3969/j.issn.1671-1122.2021.07.003

• 技术研究 • 上一篇    下一篇

一种对抗符号执行的代码混淆系统

文伟平(), 方莹, 叶何, 陈夏润   

  1. 北京大学软件与微电子学院,北京 100080
  • 收稿日期:2021-04-05 出版日期:2021-07-10 发布日期:2021-07-23
  • 通讯作者: 文伟平 E-mail:weipingwen@ss.pku.edu.cn
  • 作者简介:文伟平(1976—),男,湖南,教授,博士,主要研究方向为网络攻击与防范、软件安全漏洞分析、恶意代码研究、信息系统逆向工程和可信计算技术|方莹(1995—),女,浙江,硕士研究生,主要研究方向为网络与系统安全、智能合约安全|叶何(1998—),男,安徽,硕士研究生,主要研究方向为网络与系统安全、云计算|陈夏润(1997—),男,江西,硕士研究生,主要研究方向为网络与系统安全、漏洞挖掘
  • 基金资助:
    国家自然科学基金(61872011)

A Code Obfuscation System against Symbolic Execution Attacks

WEN Weiping(), FANG Ying, YE He, CHEN Xiarun   

  1. School of Software and Microelectronics, Peking University, Beijing 100080, China
  • Received:2021-04-05 Online:2021-07-10 Published:2021-07-23
  • Contact: WEN Weiping E-mail:weipingwen@ss.pku.edu.cn

摘要:

符号执行在辅助挖掘软件漏洞和软件去混淆等领域取得了很大的进展,作为保护软件安全最有效手段之一的代码混淆系统如今几乎无法对抗符号执行的攻击。为解决上述问题,文章从混淆系统的功能扩展和符号执行工具的弱点利用出发,通过丰富OLLVM的同义指令替换集合和恒真谓词集合,设计不透明谓词对软件控制流进行混淆以及对分支条件进行加固,提出一种可以兼容多种编程语言、可扩展并且可以对抗符号执行攻击的代码混淆系统。实验表明,文章提出的混淆系统可以在不改变软件原有功能的前提下诱导符号执行工具分析不可达的路径或者保护软件的部分路径不被探索到,从而可以有效对抗符号执行攻击。相较传统混淆系统,文章提出的混淆系统在对抗符号执行攻击方面具有明显优势。

关键词: 代码混淆, 符号执行, 不透明谓词, OLLVM

Abstract:

Symbolic execution technology has made great progress in the areas of assisting the discovery of software vulnerabilities and software de-obfuscation. As one of the most effective means to protect software security, the existing code obfuscation system can be hardly resilient against symbolic execution attacks. To solve the problem mentioned above, starting from the function extension of the obfuscation system and the weakness exploitation of the symbolic execution tool, this paper enriches the synonymous instruction replacement set and the identical truth predicate set, and designs opaque predicates to obfuscate the control flow and reinforce the branching conditions of the software, and proposes a code obfuscation system that is compatible with multiple programming languages, scalable, and can resist symbolic execution attacks. The experimental results show that this obfuscation system can induce symbolic execution tools to enter unreachable paths, or protect some right paths from being explored by symbolic execution tools without changing the original functions of the software, so that it can be resilient against the attacks of symbolic execution tools. Compared with traditional obfuscation systems, this system has obvious advantages in combating symbolic execution attacks.

Key words: code obfuscation, symbolic execution, opaque predicate, OLLVM

中图分类号: