One-click install
npx skills add https://github.com/NeverSight/NeverC --skill llvm-obfuscation-neversight
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: llvm-obfuscation
Source: https://github.com/NeverSight/NeverC/tree/main/.agents/skills/llvm-obfuscation
Command: npx skills add https://github.com/NeverSight/NeverC --skill llvm-obfuscation-neversight

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve?

LLVM-based protections help you reduce reverse-engineering, signature-based detection, and automated deobfuscation by transforming code and data without changing intended behavior.

Core Features & Use Cases

  • Control Flow Obfuscation: Apply control flow flattening, bogus control flow via opaque predicates, and CFG randomization to make analysis and reconstruction difficult.
  • Data Obfuscation: Encrypt string literals at compile time with runtime decryption, substitute constants with equivalent expressions, and split variables to increase uncertainty.
  • Code Transformation & Virtualization: Perform instruction substitution and mixed boolean-arithmetic (MBA) transforms, and use virtualization (VMP) to convert logic into embedded bytecode.

Quick Start

Use the llvm-obfuscation skill to design and implement an LLVM pass that applies string encryption and control flow flattening to selected functions in your NeverC/LLVM pipeline.

Frequently Asked Questions about llvm-obfuscation

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

FAQPage Schema
How do I apply LLVM control flow flattening to prevent reverse engineering?

LLVM control flow flattening prevents reverse engineering by transforming a function's CFG into a single dispatch loop, making automated analysis and reconstruction difficult. You apply it by wiring CFF passes into your compilation pipeline for selected functions.

What is the difference between bogus control flow and virtual machine protection in OLLVM?

Bogus control flow inserts opaque predicates to complicate graphs, while virtual machine protection (VMP) converts logic into embedded bytecode. VMP provides stronger anti-analysis by requiring attackers to build a specific emulator to deobfuscate execution.

How do I encrypt string literals at compile time using LLVM obfuscation?

You encrypt string literals at compile time by implementing a custom LLVM pass that substitutes strings with encrypted data arrays and injects runtime decryption routines. This data obfuscation increases uncertainty without changing intended behavior.

Can I integrate OLLVM-style frameworks with my existing NDK toolchain?

You can integrate OLLVM-style frameworks with an NDK toolchain by wiring custom obfuscation passes into the LLVM build pipeline. This allows you to apply string encryption and control flow transformations to C/C++ artifacts during compilation.

What are the performance trade-offs when applying mixed boolean-arithmetic transforms?

Mixed boolean-arithmetic (MBA) transforms increase binary size and runtime overhead by substituting simple operations with complex equivalent expressions. You must balance these performance costs against the desired level of anti-analysis protection.

When should I avoid using LLVM-based code virtualization?

You should avoid LLVM-based code virtualization when application performance is critical and execution overhead is unacceptable. VMP introduces significant runtime costs by converting native logic into embedded bytecode requiring an interpreter.