网络与信息安全学报 ›› 2023, Vol. 9 ›› Issue (5): 48-58.doi: 10.11959/j.issn.2096-109x.2023068

• 学术论文 • 上一篇    

基于浮点数类型转换和运算的不透明谓词构造方法

王庆丰, 梁浩, 王亚文, 谢根琳, 何本伟   

  1. 信息工程大学信息技术研究所,河南 郑州 450001
  • 修回日期:2013-01-30 出版日期:2023-10-01 发布日期:2023-10-01
  • 作者简介:王庆丰(1995− ),男,河南周口人,信息工程大学助理研究员,主要研究方向为拟态防御和软件多样化
    梁浩(1987− ),男,河南郑州人,信息工程大学副研究员,主要研究方向为网络空间主动防御、内生安全
    王亚文(1990− ),男,河南郑州人,信息工程大学助理研究员,主要研究方向为拟态防御和云计算
    谢根琳(1999− ),男,河北辛集人,信息工程大学硕士生,主要研究方向为网络空间安全和软件多样化
    何本伟(1998− ),男,安徽滁州人,信息工程大学硕士生,主要研究方向为网络空间安全和软件多样化
  • 基金资助:
    国家自然科学基金(62002383)

Constructing method of opaque predicate based on type conversion and operation of floating point numbers

Qingfeng WANG, Hao LIANG, Yawen WANG, Genlin XIE, Benwei HE   

  1. Information Technology Research Institute, Information Engineering University, Zhengzhou 450001, China
  • Revised:2013-01-30 Online:2023-10-01 Published:2023-10-01
  • Supported by:
    The National Natural Science Foundation of China(62002383)

摘要:

随着软件功能的日趋复杂和网络攻击技术的不断演进,软件盗版、软件破解、数据泄露、软件恶意修改等恶意行为呈上升趋势,软件安全问题逐渐成为行业领域普遍关注的焦点和研究方向。代码混淆是一种典型的对抗逆向工程的软件保护技术,它能够在保持程序原有功能不变的条件下加大攻击者对程序进行分析和理解的难度,被广泛应用和深入研究。现有的代码混淆技术大多由于追求混淆效果而普遍存在性能损耗偏高、隐蔽性差等问题。控制结构混淆是代码混淆技术中应用较广泛的一种,它通过扰乱程序的控制流从而提高代码逆向工程难度,不透明谓词混淆是其一大分支。为了弥补现有代码混淆技术的缺陷,提出了基于浮点数类型转换和运算的不透明谓词构造方法,利用计算机浮点数类型转换和运算过程中伴随的精度损失现象使特定条件下产生与常理相悖的运算结果,通过选择若干个小数进行强制类型转换、加法运算和乘法运算,基于其运算结果统计可以构造一系列不透明谓词,实现代码混淆功能。相较于传统的不透明谓词,该构造方法具有隐蔽性高、通用性好、可逆性、开销低等优点。实验验证表明,该方法在大幅降低攻击者对软件进行逆向工程等工作速度的同时,对于符号执行等动态分析技术具有良好的抵御性能。

关键词: 代码混淆, 虚假控制流, 不透明谓词, 浮点数运算

Abstract:

With the increasing complexity of software functions and the evolving technologies of network attacks, malicious behaviors such as software piracy, software cracking, data leakage, and malicious software modification are on the rise.As a result, software security has become a focal point in industry research.Code obfuscation is a common software protection technique used to hinder reverse engineering.It aims to make program analyzing and understanding more difficult for attackers while preserving the original program functionality.However, many existing code obfuscation techniques suffer from performance loss and poor concealment in pursuit of obfuscation effectiveness.Control flow obfuscation, particularly opaque predicate obfuscation, is widely used to increase the difficulty of code reverse engineering by disrupting the program’s control flow.A method was proposed to address the limitations of existing code obfuscation techniques.It utilized the phenomenon of precision loss that occurred during type conversion and floating-point number operations in computers.Under certain conditions, this method produced operation results that contradict common sense.By performing forced type conversion, addition, and multiplication with selected decimal numbers, a series of opaque predicates can be constructed based on the statistical analysis of their operation results.This approach achieved code obfuscation with high concealment, good generality, reversibility, and low overhead compared to traditional opaque predicates.Experimental verification demonstrates that this method significantly slows down attackers’ reverse engineering efforts and exhibits good resistance to dynamic analysis techniques such as symbolic execution.

Key words: code obfuscation, bogus control flow, opaque predicates, floating point operations

中图分类号: 

No Suggested Reading articles found!