主页 / KCon 2022 黑客大会 / 击败SOTA反混淆方法
  • 作者
    程瑞, 黄泳龙, 徐辉, 范铭
  • 简介

    代码混淆是一种被广泛应用的软件保护技术。目前,有许多基于符号执 行、污点分析、切片等软件分析方法的自动化反混淆方法被提出,传统代码 混淆方法正面临极大的挑战。同时,也有许多针对符号执行的混淆方法被提 出。这些混淆方法大部分是利用路径爆炸这一挑战性问题提出的,然而许多 反混淆方法并不会使用符号执行工具去覆盖程序的所有可能执行路径,而 仅仅是尝试覆盖所有基本块,以重建控制流图。还有一些路径合并策略(如 veritesting)能有效缓解动态符号执行中存在的路径爆炸问题,而研究者们 都没有验证他们提出的混淆方法能否有效抵抗这些策略。基于这些,我们合 理地提出第 1 个问题:已提出的反符号执行的代码混淆方法真的能有效抵 抗自动化的反混淆方法吗?部分混淆方法是通过调用系统 API 实现的,但 是,为符号执行工具编写扩展,处理 API 语义并不是复杂的工作。基于这 些,我们提出第 2 个问题:是否为符号执行工具编写简单的扩展就能导致这 些混淆方法失效?为了回答这两个问题,我们深入研究了已有的反符号执行 混淆对自动化反混淆方法的抵抗性。结果显示,现有的反符号执行混淆方法 可以分为 3 类:(1) 对自动化反混淆方法并没有明显的抵抗性;(2) 对自动 化反混淆方法有明显的抵抗性,但通过为符号执行工具编写简单的扩展,自 动化反混淆方法就可以处理它们;(3) 有明显的抵抗性,并且很难通过扩展 符号执行工具处理它们。我们深入研究了第 3 类混淆,提出了构造这一类 混淆的框架。基于我们提出的框架,软件开发者们可以简单地构造出高强度 的混淆方法。实验显示,基于我们的框架构造出的混淆方法具有更小的时间 开销。我们还提出了一种引入过污染问题的混淆构造框架,它也能让切片工 具错误地选择不相关代码。我们基于 LLVM 编译工具链实现了一个混淆编 译器,它能自动化输出被混淆过的可执行文件。本文的所有实验与工具的源 代码已开源至 Github: https://github.com/DrShabulaji/Paper_Obfs.

  • 援引
    https://github.com/knownsec/KCon/tree/master/2022
  • 提示
    本站仅做资料的整理和索引,转载引用请注明出处
相关推荐
附件下载
  • 击败SOTA反混淆方法.pdf
    时间: 大小: 0.35 M 下载: 19