Analyzing Chain of Thought (CoT) Approaches in Control Flow Code Deobfuscation Tasks
作者: Seyedreza Mohseni, Sarvesh Baskar, Edward Raff, Manas Gaur
分类: cs.SE, cs.AI
发布日期: 2026-04-16
💡 一句话要点
提出基于思维链(CoT)提示的大语言模型代码去混淆方法,提升控制流恢复和语义保持。
🎯 匹配领域: 支柱九:具身大模型 (Embodied Foundation Models)
关键词: 代码去混淆 思维链 大语言模型 控制流分析 程序语义
📋 核心要点
- 代码去混淆任务耗时费力,现有工具复杂昂贵,难以满足实际需求。
- 利用思维链(CoT)提示,引导大语言模型逐步推理,实现代码去混淆。
- 实验表明,CoT提示显著提升了控制流图重建和语义保持,GPT5模型表现最佳。
📝 摘要(中文)
代码去混淆旨在恢复程序的可读版本,同时保持其原始行为。传统方法通常需要耗时数天甚至数月的人工操作,并依赖复杂且昂贵的分析工具。本文探索了一种基于思维链(CoT)提示的替代方法,该方法引导大型语言模型通过显式的、逐步推理来分析代码。研究重点是控制流混淆,包括控制流扁平化(CFF)、不透明谓词及其组合。评估指标包括控制流图的结构恢复和程序语义的保持。实验结果表明,与简单提示相比,CoT提示显著提高了去混淆质量。在标准C基准测试集上验证了该方法,并使用控制流图的结构指标和基于输出相似性的语义指标报告了结果。实验表明,通过应用CoT,GPT5取得了最佳的整体性能,与零样本提示相比,在控制流图重建方面平均提升约16%,在语义保持方面平均提升约20.5%。研究结果还表明,模型性能不仅取决于混淆级别和所选的混淆器,还取决于原始控制流图的内在复杂性。这些发现表明,CoT引导的大型语言模型可以作为代码去混淆的有效助手,提供改进的代码可解释性、更真实的控制流图重建以及更好地保持程序行为,同时可能减少逆向工程所需的人工工作。
🔬 方法详解
问题定义:代码去混淆旨在恢复被混淆代码的可读性,同时保证其原始语义不变。现有方法,如符号执行、静态分析等,通常需要大量人工干预,且计算复杂度高,难以处理复杂的混淆技术。因此,如何自动化、高效地进行代码去混淆是一个重要的研究问题。
核心思路:本文的核心思路是利用大型语言模型(LLM)的强大代码理解和生成能力,通过思维链(Chain-of-Thought, CoT)提示,引导LLM逐步分析混淆代码,推理出原始代码的结构和语义。CoT提示模仿人类解决问题的过程,将复杂问题分解为多个简单步骤,从而提高LLM的推理能力和准确性。
技术框架:该方法主要包含以下几个阶段:1) 输入混淆代码;2) 使用CoT提示引导LLM进行逐步分析,例如,识别控制流结构、消除不透明谓词等;3) LLM根据分析结果生成去混淆后的代码;4) 使用结构指标(如控制流图相似度)和语义指标(如输出相似度)评估去混淆效果。
关键创新:该方法最重要的创新点在于将CoT提示应用于代码去混淆任务。与传统的零样本提示相比,CoT提示能够显著提高LLM的推理能力,使其能够更好地理解混淆代码的结构和语义,从而提高去混淆的准确性和效率。此外,该方法还探索了不同LLM在代码去混淆任务上的性能差异。
关键设计:CoT提示的设计是关键。例如,针对控制流扁平化,可以设计如下提示:“首先,识别代码中的状态变量;然后,分析状态变量的取值范围;接着,根据状态变量的取值,推断出不同的控制流分支;最后,将扁平化的控制流图恢复为原始的嵌套结构。” 此外,实验中使用了多种结构指标和语义指标来评估去混淆效果,例如,控制流图的编辑距离、程序输出的相似度等。
🖼️ 关键图片
📊 实验亮点
实验结果表明,CoT提示显著提升了代码去混淆的性能。与零样本提示相比,GPT5模型在控制流图重建方面平均提升约16%,在语义保持方面平均提升约20.5%。此外,实验还发现,模型性能不仅取决于混淆级别和混淆器,还取决于原始控制流图的复杂性。
🎯 应用场景
该研究成果可应用于软件安全、逆向工程、恶意代码分析等领域。通过自动化代码去混淆,可以降低人工分析的成本和时间,提高软件漏洞挖掘和恶意代码检测的效率。未来,该方法有望集成到自动化安全分析工具中,为软件安全提供更强大的支持。
📄 摘要(原文)
Code deobfuscation is the task of recovering a readable version of a program while preserving its original behavior. In practice, this often requires days or even months of manual work with complex and expensive analysis tools. In this paper, we explore an alternative approach based on Chain-of-Thought (CoT) prompting, where a large language model is guided through explicit, step-by-step reasoning tailored for code analysis. We focus on control flow obfuscation, including Control Flow Flattening (CFF), Opaque Predicates, and their combination, and we measure both structural recovery of the control flow graph and preservation of program semantics. We evaluate five state-of-the-art large language models and show that CoT prompting significantly improves deobfuscation quality compared with simple prompting. We validate our approach on a diverse set of standard C benchmarks and report results using both structural metrics for control flow graphs and semantic metrics based on output similarity. Among the tested models and by applying CoT, GPT5 achieves the strongest overall performance, with an average gain of about 16% in control-flow graph reconstruction and about 20.5% in semantic preservation across our benchmarks compared to zero-shot prompting. Our results also show that model performance depends not only on the obfuscation level and the chosen obfuscator but also on the intrinsic complexity of the original control flow graph. Collectively, these findings suggest that CoT-guided large language models can serve as effective assistants for code deobfuscation, providing improved code explainability, more faithful control flow graph reconstruction, and better preservation of program behavior while potentially reducing the manual effort needed for reverse engineering.