llvm-obfuscation

Obfuscate LLVM IR with control flow flattening, string encryption, and virtualization.

868|100|Updated Jan 10, 2022
One-click install
npx skills add https://github.com/gmh5225/awesome-llvm-security --skill llvm-obfuscation
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: llvm-obfuscation
Source: https://github.com/gmh5225/awesome-llvm-security/tree/main/.claude/skills/llvm-obfuscation
Command: npx skills add https://github.com/gmh5225/awesome-llvm-security --skill llvm-obfuscation

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve?

Obfuscates LLVM-based code to resist reverse engineering.

Core Features & Use Cases

  • Control Flow Obfuscation: Transform structured control flow into dispatcher loops and opaque predicates to hinder static analysis.
  • Data Obfuscation: Apply string encryption and constant substitution to hide sensitive literals.
  • Virtualization & Transformations: Convert hot code paths into custom bytecode executed by a lightweight VM.
  • Anti-Deobfuscation & Best Practices: Address downstream analysis risks and maintain semantic integrity.

Quick Start

Obfuscate a sample LLVM IR function using OLLVM by applying control-flow flattening, string encryption, and optional virtualization. Provide a step-by-step plan and the transformed IR for verification.

Frequently Asked Questions about llvm-obfuscation

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I obfuscate LLVM IR to resist reverse engineering?

You can obfuscate LLVM IR by applying OLLVM-compatible compiler passes that transform structured code into dispatcher loops with opaque predicates, encrypt strings, and convert hot paths into custom VM bytecode.

What is control flow flattening in LLVM obfuscation?

Control flow flattening is an obfuscation technique that transforms structured control flow into dispatcher loops and opaque predicates, hindering static analysis and making reverse engineering significantly more difficult.

How does string encryption work in OLLVM?

String encryption in OLLVM applies data obfuscation through constant substitution to hide sensitive literals, ensuring that original strings are not statically visible in the compiled binary.

Do I need an LLVM toolchain to use virtualization obfuscation?

Yes, you need an LLVM toolchain and OLLVM-compatible implementations to execute virtualization obfuscation techniques, which convert hot code paths into custom bytecode executed by a lightweight VM.

Can LLVM obfuscation maintain semantic integrity during transformations?

Yes, LLVM obfuscation maintains semantic integrity by ensuring that control flow flattening, string encryption, and virtualization transformations preserve the original program's runtime behavior while resisting analysis.

What are the limitations of control flow obfuscation against deobfuscation?

Control flow obfuscation faces downstream analysis risks where advanced static and dynamic analysis tools can attempt to reconstruct original logic, making anti-deobfuscation best practices necessary for stronger protection.