2025 · Conference paper

Exploring the Potential of LLMs for Code Deobfuscation

Studies LLMs as source-to-source deobfuscators for C functions protected with the Tigress obfuscator. Functions from ExeBench, with identifiers randomized, are obfuscated with five transformations: MBA arithmetic encoding, branch encoding, control-flow flattening, opaque predicates and argument randomization. Each model receives a whole obfuscated function and returns simplified C. DeepSeek Coder 6.7B and Code Llama 7B are fine-tuned on obfuscated–original pairs, GPT-4 is prompted, and Clang optimization at -O0 to -O3 serves as a compiler baseline. Simplification is scored with Halstead program length relative to the original and obfuscated code, syntactic correctness by compiling ExeBench wrappers and semantic correctness by ExeBench input/output samples. The fine-tuned models reduce complexity more than GPT-4 on every transformation and more than Clang except on arithmetic encoding and argument randomization, where Clang is on par. Trained on chains of up to five transformations, they keep stable scores on chains of six and seven, and the best model cuts Halstead program length by 89.21% on average in the hardest scenario. A test with randomized constants found one sample that reproduced memorized code.

Scope and limitations

The obfuscation is Tigress (version 3.3.3 in the released scripts) applied source-to-source to single C functions. Compiled binaries, decompiler output, commercial protectors, inter-procedural obfuscation, VM-based packing and self-modifying code are not evaluated; the authors only note that decompilation can approximate C from binaries. This is source-level simplification, not binary deobfuscation or VM devirtualization. Semantic correctness is the main weakness: for single transformations the fine-tuned models preserve behavior in 50% to 94.5% of samples, mostly below GPT-4 and, except for branch encoding, below Clang, and it falls as transformation chains grow longer. Complexity scores count only samples that are both syntactically and semantically correct. Behavior is checked with ExeBench input/output samples rather than equivalence proofs, inputs are limited to a 6,144-token context, and models were fine-tuned with 8-bit quantization. Only one obfuscator is used, so generalization to other obfuscators, versions, machine code or bytecode is left open, and baselines are GPT-4 and Clang rather than dedicated deobfuscation tools.

Why it fits this collection

Adds source-level deobfuscation of protected C code with fine-tuned code LLMs, complementing the JavaScript (JsDeObsBench, CASCADE) and Android (DeGuard) deobfuscation papers and the LLM decompilation research in this section.

Publication and review details

Venue
DIMVA 2025
Status
Conference paper
Publication / posting date
July 10, 2025
Date source
Springer's Crossref deposit gives first online publication on 2025-07-10, during the July 9–11 conference; its print and issued dates give only the year. This entry uses the publisher's online date, not the conference schedule or the later CISPA repository date.
DOI
10.1007/978-3-031-97620-9_15

Springer's Crossref deposit gives the Lecture Notes in Computer Science proceedings of the 22nd DIMVA (Graz, 9–11 July 2025), pages 267–286, and the nine authors in the order of the PDF byline. The Springer landing page returned a browser challenge to automated requests, so the review used Crossref and the open-access PDF from the CISPA repository record 10.60882/cispa.32771220.v1 (CC BY 4.0, deposited 2026-06-23). That record and the CISPA publication page list "Antonio Emanuele" and "Sébastian Bardin"; the authors here follow Crossref and the PDF. An arXiv API search for Beste with deobfuscation in the title returned no record, so arxiv_id is null. The PDF links DavidBeste/llm-code-deobfuscation, reviewed at commit 00c9c45 (2026-02-27), which added the MIT LICENSE after publication. Its README links the dataset 10.5281/zenodo.15831457 (2025-07-10, CC BY 4.0, a 17 MB deobfuscation_dataset.zip that was not downloaded); that dataset DOI is not used as the paper identifier. The scripts call a separately installed Tigress 3.3.3, load ExeBench from Hugging Face and query the OpenAI API for GPT-4 (gpt-4-32k-0314 in the README examples); requirements.txt pins clang 14.0 and torch 2.4.1 but lists two conflicting versions each of peft and transformers. No code or experiments were run.

Sources reviewed

Source review only; experiments were not rerun for this collection. Cite the original authors using the linked paper or BibTeX.

Report an outdated entry Suggest a translation fix

Primary sources

  1. https://doi.org/10.1007/978-3-031-97620-9_15
  2. https://api.crossref.org/works/10.1007/978-3-031-97620-9_15
  3. https://ndownloader.figshare.com/files/65792754
  4. https://publications.cispa.de/articles/conference_contribution/Exploring_the_Potential_of_LLMs_for_Code_Deobfuscation/32771220
  5. https://cispa.de/en/research/publications/84747-exploring-the-potential-of-llms-for-code-deobfuscation
  6. README.md GitHub · DavidBeste/llm-code-deobfuscation · Revision 00c9c45
  7. LICENSE GitHub · DavidBeste/llm-code-deobfuscation · Revision 00c9c45
  8. requirements.txt GitHub · DavidBeste/llm-code-deobfuscation · Revision 00c9c45
  9. single_transformations/eval/create_eval_data_single.py GitHub · DavidBeste/llm-code-deobfuscation · Revision 00c9c45
  10. https://zenodo.org/records/15831457