Translingual Obfuscation
程序混淆是一种重要的软件保护技术,它可以防止攻击者泄露软件的编程逻辑和设计。我们介绍了一种新的软件混淆方案,使程序模糊的“误用”某些程序设计语言的独特功能。跨语言混淆将程序的一部分从其原始语言翻译成具有不同编程范式和执行模型的另一种语言,从而增加程序复杂性并阻碍逆向工程。本文研究了用逻辑程序设计语言Prolog进行双语混淆的可行性和有效性。我们在一个名为BABEL的工具中实现了双语混淆,该工具可以有选择地将C函数转换为Prolog谓词。通过利用Prolog语言的两个重要特性,即,由于BABEL的统一性和回溯性,它混淆了C程序的数据布局和控制流,使它们更难进行逆向工程。我们的实验表明,BABEL提供了有效的和隐形的软件混淆,而成本只有适度相比,市场上最流行的商业混淆。利用BABEL验证了语义混淆的可行性,认为语义混淆是软件混淆的一个新方向。
2016-01-12 cs.CR cs.SE
A Core-Structure-Based Automated Analysis Tool for Commercial Virtualization Obfuscation Deobfuscation
Chungnam National University(忠南国立大学)
针对虚拟化混淆技术,提出VMPredator工具,通过内存分析和轨迹分析自动提取语义单元,将混淆程序长度减少约85%,并验证了小规模程序完全恢复为与原语义相同的代码。
2026-05-29 cs.CR
Obfuscation of Unitary Quantum Programs
本文提出首个支持量子输入输出的酉量子程序混淆方案,利用功能性量子认证和编译器技术,在经典预言机模型中实现安全混淆。
2025-10-10 cs.CR quant-ph
A Systematic Study on Static Control Flow Obfuscation Techniques in Java
控制流混淆(CFO)在不改变程序语义的情况下改变程序的控制流路径。现有的文献提出了几种技术;然而,快速调查显示,所提出的技术类型缺乏明确性,以及有多少是独特的。同样不清楚的是,CFO的理论和实践是否存在差异。在本文中,我们系统地研究CFO技术提出的Java程序,无论是从论文和商用工具。我们评估了13混淆使用的数据集的16个程序具有不同的软件特性,和不同的混淆参数。每个程序都经过仔细的逆向工程,以研究混淆的效果。我们的研究表明,有36个独特的技术提出的文献和7个工具。三个最流行的商业混淆器只实现了文献中36种技术中的13种。因此,在CFO的理论和实践之间似乎存在着差距。我们提出了一种新的分类的混淆技术的基础上的程序,被改造的基本组成部分。我们确定的技术,是有力的对逆向工程攻击,无论是从人类分析师和自动程序反编译器的角度来看。我们的分析表明,大多数工具都没有实现这些技术,从而击败了保护混淆提供。我们提供了选择技术的例子,并讨论我们的研究结果。据我们所知,我们是第一个进行这种研究的。这项研究将有助于软件设计人员根据他们的需求决定使用的最佳技术,研究人员了解最先进的技术和商业混淆器开发人员开发新技术。
2018-09-28 cs.CR
ObfusQate: Unveiling the First Quantum Program Obfuscation Framework
本文提出首个量子程序混淆框架ObfusQate,通过量子电路级和代码级共八种混淆方法增强程序安全,实验证明其混淆后的恶意代码可规避GPT 4o等大语言模型检测。
2025-08-12 cs.CR cs.ET
Hiding in the Particles: When Return-Oriented Programming Meets Program Obfuscation
众所周知的攻击场景,代码重用技术在仔细研究揭示的属性,也是吸引人的程序混淆。我们探讨流行的返回导向的编程范式下,这盏灯,转换成ROP链与周围的软件栈无缝共存的程序功能。我们将展示如何构建能够承受流行的静态和动态去混淆方法的链,评估常见程序设计的鲁棒性和开销。结果表明,为了秘密发现和代码覆盖目标,需要大量的计算资源来进行去混淆攻击。
2021-04-06 cs.CR cs.SE
N-Version Obfuscation: Impeding Software Tampering Replication with Program Diversity
防篡改是软件安全的一个重要研究领域。已经提出了许多方法来阻止特定的篡改过程,例如,混淆和自校验和。然而,据我们所知,它们都不能达到理论上的防篡改。我们的想法是通过程序的多样化来阻止篡改的复制,从而增加破解整个软件系统的复杂性。为此,我们建议提供相同的功能,但功能不等同的软件副本到不同的机器。我们正式定义的问题N版本混淆,并提供了一个可行的手段来解决这个问题。我们的评估结果表明,打破软件系统所需的时间是线性增加的软件版本的数量,这是O(n)的复杂度。
2015-06-08 cs.CR cs.PL
Technical Report: Hardening Code Obfuscation Against Automated Attacks
软件混淆是保护知识产权和管理数字版权的关键技术。尽管其巨大的实际重要性,商业和学术最先进的混淆方法都容易受到过多的自动化去混淆攻击,如符号执行,污点分析,或程序合成。虽然最近提出了几种增强的混淆技术来阻止污点分析或符号执行,但它们要么强加了禁止性的运行时开销,要么可以以自动化的方式被移除(例如,通过编译器优化)。一般而言,这些技术的缺点在于集中于单个攻击向量,从而允许攻击者切换到其他更有效的技术,诸如程序合成。在这项工作中,我们提出了Loki,一种软件混淆的方法,可以抵御所有已知的自动去混淆攻击。为此,我们使用并有效地结合多种技术,包括一个通用的方法来合成正式验证表达式的任意复杂性。与依赖于一些硬编码生成规则的最先进方法相反,我们的表达式更加多样化,更难进行模式匹配。即使是最新的混合布尔算术(MBA)去混淆研究也未能简化它们。此外,Loki还可以防止以前未考虑的攻击向量,例如程序合成,它将成功率降低到只有19%。在一个全面的评估,我们表明,我们的设计产生的开销显着减少,同时提供了更强的保护水平相比,现有的作品。
2022-06-17 cs.CR
Benchmarking Large Language Models for IoC Recovery under Adversarial Code Obfuscation and Encryption
Universidad Carlos III(卡洛斯三世大学)
本文提出一个系统性基准测试,评估LLM在对抗性代码转换下恢复隐藏的IoC能力,发现加密技术显著降低检测性能,揭示LLM在代码分析中的局限性及改进方向。
2026-05-07 cs.CR
Cryptography without Long-Term Quantum Memory and Global Entanglement: Classical Setups for One-Time Programs, Copy Protection, and Stateful Obfuscation
本文利用仅支持经典查询的预言机与半量子令牌,在无长期量子存储器和全局纠缠条件下构造半量子 OTP、RAM 混淆,并进一步实现长命一次性程序与复制保护。
2025-05-13 cs.CR quant-ph
How to Use Quantum Indistinguishability Obfuscation
本文提出量子态不可区分性混淆(qsiO),为所有程序实现最佳可能复制保护,并借助耦合不可克隆加密(cUE)将具体复制保护扩展到一大类可穿刺程序。
2024-05-03 cs.CR quant-ph
Obfuscation as Instruction Decorrelation
本文提出指令去相关这一新混淆方法,通过形式化定义、随机交织与内存访问混淆等变换,以及仅用TEE做地址转换和洗牌的解释器,使真实程序指令看似独立,从而提升混淆的实用性与安全性。
2024-11-08 cs.CR cs.PL
ASTANA: Practical String Deobfuscation for Android Applications Using Program Slicing
Android开发人员广泛使用软件混淆来保护其应用程序的源代码免受对抗性逆向工程的影响。一种特定类型的混淆,字符串混淆,将源代码中所有字符串文字的内容转换为不可解释的文本,并插入逻辑以在运行时对这些字符串文字进行去混淆。在这项工作中,我们证明了字符串混淆是很容易可逆的。我们提出ASTANA,Android应用程序的实用工具,以恢复人类可读的内容从混淆字符串字面量。ASTANA对混淆逻辑或应用程序结构做了最少的假设。关键思想是为特定(模糊)字符串字面量执行去模糊逻辑,这会产生原始字符串值。为了获得相关的去混淆逻辑,我们提出了一个轻量级的乐观算法,基于程序切片技术。通过对100个流行的真实金融应用的实验评估,我们证明了ASTANA的实用性。我们验证了我们的去混淆工具的正确性,并提供了由开发人员评估的Android应用程序的字符串混淆器的行为的见解。
2021-04-06 cs.CR cs.SE
Thread-Based Obfuscation through Control-Flow Mangling
随着云计算和远程执行的日益普及,程序安全变得尤为重要。代码混淆被提出来使攻击者对程序的理解更加复杂。在本文中,我们利用多核处理,大大增加了程序的复杂性,使逆向工程更加复杂。我们提出了一种新的方法,自动分区任何串行线程成任意数量的并行线程,在基本块级别。该方法生成新的控制流图,保持块的串行后继关系,并保证一个基本块是活动的时间使用警卫。该方法为m个线程和n个基本块生成m^n个不同的组合,显著地使执行状态复杂化。给出了算法的正确性证明,并在LLVM编译框架中实现了该算法。
2013-10-31 cs.CR cs.PL
Security Analysis of Universal Circuits as a Mechanism for Hardware Obfuscation
University of Idaho(爱达荷大学);Carnegie Mellon University(卡内基梅隆大学)
研究通用电路在硬件知识产权保护中的安全性,评估了状态最新oracle引导和无oracle攻击下的表现,证明其在保护IP方面的可行性。
2026-04-03 cs.CR
Drndalo: Lightweight Control Flow Obfuscation Through Minimal Processor/Compiler Co-Design
二进制分析传统上用于恶意软件检测领域。然而,攻击者可以使用相同的技术来分析原始二进制文件,以便对其进行逆向工程并提取可利用的弱点。当二进制文件分发给最终用户时,它就成为一个常见的可远程利用的攻击点。代码混淆用于阻止可执行程序的逆向工程。在本文中,我们专注于保护二进制分发,攻击者可以访问分发到终端设备的二进制文件,以便对其进行逆向工程并找到潜在的漏洞。然而,攻击者没有手段来监视所述设备的执行。特别是,我们专注于控制流混淆-一种技术,防止攻击者恢复正确的可达性条件的基本块的程序。通过这样做,我们阻止了攻击者推断导致程序进入易受攻击状态的输入(例如,缓冲区溢出)。我们提出了一个编译器扩展混淆和动态去混淆,利用存储在硬件中的秘密密钥的最小硬件修改。我们评估我们的实验LLVM编译器工具链和BRISC-V开源处理器。在PARSEC基准测试中,我们的去混淆技术只会产生5%的运行时开销。我们通过对混淆和未混淆的二进制文件训练分类器来评估Drndalo的安全性。我们的研究结果照亮的困难,产生混淆的任意程序的二进制文件,以这样一种方式,他们是统计上无法区分从普通的二进制文件。
2019-11-29 cs.CR cs.DC
Obfuscation Resilient Search through Executable Classification
Android应用程序通常在发布前进行模糊处理,因此很难分析它们是否存在恶意软件或侵犯知识产权。混淆器可以通过重命名变量和/或修改程序结构来隐藏代码的真实意图。搜索与混淆的应用程序相关的可执行文件以供开发人员高效分析是具有挑战性的。以前的模糊弹性搜索方法依赖于应用程序的某些结构部分作为地标,不受模糊影响。例如,一些先前的方法假设标识符之间的结构关系不会被混淆器破坏;其他方法假设控制流图保持其结构。这两种方法都很容易被动机模糊器击败。我们提出了一种新的方法,Macneto,利用深度学习和指令上的主要组件来搜索与混淆的可执行文件相关的程序。Macneto对模糊处理器可能执行的修改类型几乎没有做出任何假设。我们表明,它具有很高的搜索精度,由一个国家的最先进的混淆器,改变控制流混淆的可执行文件。此外,我们还展示了Macneto帮助开发人员理解可执行文件的潜力,其中Macneto为混淆的可执行文件推断关键字(来自相关的未混淆程序)。
2018-06-11 cs.CR cs.SE
Erlang Binary and Source Code Obfuscation
Eötvös Loránd Tudományegyetem / University (ELTE)(厄特沃什·罗兰大学)
本文研究了埃朗程序在源代码、抽象语法树、BEAM汇编和BEAM字节码层面的混淆技术,重点探讨了通过复杂化逆向工程、反编译和再编译过程来提升安全性的方法,同时基于实际的埃朗编译器、验证器、加载器和虚拟机行为。
2026-04-15 cs.CR cs.PL
Indistinguishability Obfuscation of Circuits and its Application in Security
本文讨论的是一个$i\mathcal{O}$(不可混淆性混淆器)的电路在尼克的类。混淆器是通过编码的分支程序巴林顿的定理,使用多线性拼图框架。我们将在各种不可解释性硬度假设下证明,构造的混淆器是Nick类的$i\mathcal{O}$。使用全同态加密,我们将放大结果并为$\textbf{P}/poly$构造一个$i\mathcal{O}$,这是多项式大小的电路。本文还对$i\mathcal{O}$和函数加密进行了讨论。
2022-06-28 cs.CC cs.CR
Control-flow Flattening Preserves the Constant-Time Policy (Extended Version)
混淆编译器通过模糊其含义并阻碍其原始源代码的重建来保护软件。在定义这种编译器时,典型的关注点是它们对逆向工程的鲁棒性和所生成代码的性能。在研究程序的安全属性是否在混淆下保持方面做了很少的工作。在本文中,我们开始解决这个问题:我们考虑控制流扁平化(一种在工业编译器中使用的流行混淆技术)和特定的安全策略(即恒定时间)。我们证明了这种混淆保留了策略,即,每一个满足政策的程序在转换后仍然是这样。
2020-03-12 cs.CR cs.PL
An Empirical Study of Code Obfuscation Practices in the Google Play Store
University of New South Wales (UNSW)(新南威尔士大学);University of Sydney(悉尼大学)
本文对 Google Play 商店八年内超 50 万个 Android APK 进行大规模实证分析,提出分类器检测混淆代码与工具,揭示混淆使用率增长 13% 的趋势及其在热门应用和游戏类中的更高普及度。
2025-02-07 cs.AI cs.CR cs.SE
Securing SQLJ Source Codes from Business Logic Disclosure by Data Hiding Obfuscation
信息安全是指保护信息不受未经授权的访问、使用、披露、中断、修改、阅读和破坏。CAIN模型建议维护信息的机密性、真实性、完整性和不可否认性。Oracle 8i、9i和11g数据库支持SQLJ框架,允许在Java程序中嵌入SQL语句,并提供程序员友好的方式来访问Oracle数据库。随着云计算技术的流行,SQLJ被认为是一种灵活的、用户友好的用于在网格架构中开发分布式应用程序的语言。SQLJ源代码被翻译成Java字节码,反编译是从中间字节码生成源代码。中间的SQLJ应用程序字节代码对反编译是开放的,这使得恶意的读者能够强制反编译它,以便从代码中理解机密的业务逻辑或数据。据我们所知,Oracle数据库安全性存在强大且具有成本效益的技术,但客户端应用程序仍然缺乏数据安全技术,从而可能泄露机密业务数据。数据混淆是将数据隐藏在代码中,我们建议通过数据隐藏来增强SQLJ源代码中的数据安全性,以减少机密业务数据的泄露,特别是分布式应用程序中的整数。
2012-05-22 cs.CR cs.DB cs.DC
Fine-Grained Static Detection of Obfuscation Transforms Using Ensemble-Learning and Semantic Reasoning
Univ. Grenoble Alpes(格勒诺布尔阿尔卑斯大学);CNRS(法国国家科学研究中心);Institut Fourier(傅里叶研究所);Trusted Labs, Thales Group(泰雷兹集团可信实验室)
有效地检测所使用的软件保护的能力是促进选择和应用适当的去混淆技术的首要条件。我们提出了一种新的方法,结合语义推理技术集成学习分类的目的是提供一个静态检测框架混淆变换。与现有的工作相比,我们提供了一种方法,可以检测多层混淆,而不依赖于所使用的训练集的底层功能的知识。我们还扩展了我们的工作,以检测混淆转换的结构,从而提供了一个细粒度的方法。为此,我们提供了几个研究的最佳实践的使用机器学习技术的可扩展和有效的模型。根据我们对Tigress和OLLVM等混淆器的实验结果和评估,我们的模型在最先进的混淆转换上具有高达91%的准确率。我们对它们的构造的整体准确度高达100%。
2019-11-18 cs.CL cs.CR cs.IT
Chaotic Compilation for Encrypted Computing: Obfuscation but Not in Name
一个“混淆”的加密计算在这里被精确量化,导致一个论点,即通过故意“混乱”的编译所需的安全属性在该环境中的安全性,已实现对多项式时间攻击的安全性为用户数据。加密计算是处理器的新兴科学和技术,它通过加密的中间值(以接近传统的速度)将加密的输入转换为加密的输出。其目的是使通用计算中的用户数据安全,以防止操作员和操作系统成为潜在的对手。一个绊脚石一直是内存地址是数据,良好的加密意味着加密值随机变化,这使得在没有地址解密的情况下击中内存中的任何目标都有问题,但在内存路径上的任何地方解密都会打开许多容易利用的漏洞。本文“解决了(混乱)编译”的处理器没有地址解密,覆盖所有的ANSI C,同时满足所需的安全属性和开放领域的标准软件工具链和基础设施。这就产生了上面提到的参数,它也可以在没有加密的情况下成立。
2019-04-29 cs.CR cs.PL
On Best-Possible One-Time Programs
MIT(麻省理工学院);Fujitsu Research(富士通研究所);Northeastern University(东北大学);NTT Research(NTT研究所);University of California, Berkeley(加利福尼亚大学伯克利分校);Stanford University(斯坦福大学)
本文提出了一种状态化的量子不可区分混淆,用于构建最佳可能的一次性程序,以实现最强的一次性安全。
2026-10-06 cs.CR quant-ph
Challenges and Future Directions in Agentic Reverse Engineering Systems
本文探讨了基于大语言模型的代理系统在二进制反工程中的表现,分析了静态、动态和混合代理的局限性,指出token限制、反编译困难和缺乏程序防护等挑战,并提出未来发展方向。
2026-04-15 cs.AI cs.CR
Data Minimisation: a Language-Based Approach (Long Version)
数据最小化是一项隐私增强原则,被视为个人数据法规的支柱之一。这一原则规定,收集的个人数据不应超过用户同意的特定目的所必需的。在本文中,我们研究数据最小化从程序设计语言的角度来看。我们假设,一个给定的程序体现了数据汇集的目的,并定义一个数据最小化作为一个预处理器的输入,这减少了可用的信息量的程序,而不损害其功能。在这种情况下,我们研究数据最小化的正式定义,提出不同的机制和架构,以确保数据最小化,并提供一个程序来合成一个正确的数据最小化为一个给定的程序。
2016-11-17 cs.CR
Implementing Support for Pointers to Private Data in a General-Purpose Secure Multi-Party Compiler
最近的编译器允许将处理私有数据的通用程序(以传统的程序设计语言编写)翻译成相应功能的安全分布式实现。由此产生的程序,然后保证可证明保护私人数据使用安全的多方计算技术。这种编译器的目标是通用性、可用性和效率,但是现有的编译器迄今为止还不支持现代程序设计语言的完整特征集。特别是,最近的编译器PICCO和两方ANSI C编译器努力将任何C程序翻译成其安全的多方实现,但目前缺乏对指针和动态内存分配的支持,这是许多C程序的重要组成部分。在这项工作中,我们减轻了限制,并增加了对私有数据的指针的支持,从而为PICCO编译器提供动态内存分配,使其能够处理私有数据上更多样化的程序集。因为这样做开辟了一个新的设计空间,我们调查使用指针的私有数据(与已知以及存储在他们的私人位置)在程序中,并报告我们的发现。除了动态内存分配,我们研究其他重要的主题与常见的指针使用,如指针/地址引用,铸造,并建立各种数据结构的安全多方计算的上下文中。这使得编译器能够自动将使用指向私有数据的指针的用户程序转换为其分布式实现,从而在整个计算过程中可证明地保护私有数据。我们经验评估的建设和报告的代表性方案的性能。
2017-06-30 cs.CR cs.PL
Towards Simple and Useful One-Time Programs in the Quantum Random Oracle Model
University of Maryland, College Park(马里兰大学帕克分校);NeverLocal Ltd.(NeverLocal有限公司)
本文在量子随机预言模型中构造了安全的单次记忆方案,提出新的POVM界限,并探讨了对抗性深度的安全性,为实际应用的单次程序提供理论基础。
2026-03-13 cs.CR quant-ph
Quantum One-Time Programs, Revisited
本文重新审视量子一次性程序,为概率经典函数提出新的可实现安全定义,并分别在经典预言机模型和普通模型中构造一次性程序,同时揭示其可实现边界与泄露风险。
2025-08-27 cs.CR quant-ph