Instruction Substitution
Protection ID: instruction_substitution
Instruction Substitution replaces standard CPU instructions with functionally equivalent sequences that produce the same result. This defeats pattern-based analysis tools that identify common operations by their instruction signatures.
Configuration
{
"protections": {
"instruction_substitution": "medium"
}
}{
"protections": {
"instruction_substitution": "medium"
}
}Available levels: "simple", "medium", "complex".
How It Works
Reverse engineering tools and automated analyzers rely on recognizing standard instruction patterns to understand what code does. For example, a simple addition might always compile to the same instruction sequence, making it easy to spot across the binary.
Instruction Substitution breaks this pattern recognition by replacing standard instructions with alternative sequences that compute the same result in a different way. The behavior is identical, but the binary representation no longer matches the patterns that analysis tools expect.
Higher complexity levels produce more elaborate substitutions that are harder to reverse, with a corresponding small increase in code size.
Intensity Levels
| Level | Description |
|---|---|
simple | Basic substitutions with minimal overhead |
medium | More varied substitutions that defeat common pattern matchers |
complex | Highly diverse substitutions for maximum resistance to automated analysis |
When to Use
Instruction Substitution is effective against automated binary analysis tools and signature-based detection. It works best when combined with Arithmetic Obfuscation and Register Shuffling for comprehensive instruction-level protection.
Related
- Arithmetic Obfuscation - Transform arithmetic expressions
- Register Shuffling - Randomize register usage
- Protections Overview - All available protections