Software Control Flow Obfuscation via Dynamic Branch Targets

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing techniques for computer software are ineffective in preventing reverse engineering, as they do not adequately impede the disassembly and mapping of control flow between instructions, allowing attackers to understand the inner workings of software programs.

Innovation Solution

The method involves obfuscating the control flow by replacing branch point targets with computed values dependent on prior computed values, and adding non-executed 'fake' code that statistically matches real code, making it difficult to reverse engineer the software flow by using computed values and masked targets in jump tables.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Difficulty of detecting and measuring

If branch point targets are replaced with computed values dependent on prior computed values, then the difficulty of reverse engineering increases, but the complexity of the control flow increases

Engineering Contradiction:
Improvedifficulty of reverse engineeringVSAvoidcomplexity of control flow
Core Design Contradiction:
Difficulty of detecting and measuringVSDevice complexity

Solution Approach 1:

The patent applies dynamics by replacing static branch target addresses with dynamic computed values that depend on prior executed instructions. This makes the control flow adaptive and context-dependent, increasing the difficulty of reverse engineering while managing complexity through systematic computation rules

Inventive Principle:
Principle #15Dynamics

Solution Approach 2:

The patent introduces computed values as intermediaries between the original branch targets and the actual control flow. These computed values act as mediators that obscure the direct relationship between branch points and targets, making reverse engineering more difficult while maintaining functional equivalence

Inventive Principle:
Principle #24Intermediary (Mediator)

2Difficulty of detecting and measuring

If non-executed 'fake' code is added to match statistical properties of real code, then the difficulty of detecting real code increases, but the size of the software increases

Engineering Contradiction:
Improvedifficulty of detecting real codeVSAvoidsize of software
Core Design Contradiction:
Difficulty of detecting and measuringVSQuantity of substance

Solution Approach 1:

The patent creates copies of code segments with matching statistical properties (opcode frequencies, instruction patterns) to serve as deceptive fake code. These copies mimic the characteristics of real code without executing, making it difficult for reverse engineers to distinguish between real and fake code paths

Inventive Principle:
Principle #26Copying

Solution Approach 2:

The patent changes the parameters of code segments by modifying statistical properties such as opcode distribution and instruction patterns to match between real and fake code. This parameter matching makes the fake code statistically indistinguishable from real code, increasing detection difficulty

Inventive Principle:
Principle #35Parameter changes

3Reliability

If computed values depend on all prior computed values in the program, then the obfuscation effectiveness increases, but the computational overhead increases

Engineering Contradiction:
Improveobfuscation effectivenessVSAvoidcomputational overhead
Core Design Contradiction:
ReliabilityVSUse of energy by moving object

Solution Approach 1:

The patent implements feedback mechanisms where each computed branch target value depends on previously computed values in the execution stream. This creates a chain of dependencies that propagates obfuscation effects throughout the program, increasing effectiveness while the systematic feedback structure manages computational overhead

Inventive Principle:
Principle #23Feedback

Data Source

PatentUS8756435B2Obfuscation of control flow of software
Publication Date: 2014.06.17 APPLE INC
  • US8756435B2 patent drawing
  • US8756435B2 patent drawing
  • US8756435B2 patent drawing

AI summary

Methods, media and systems that obfuscate control flow in software programs. The obfuscation can impede or prevent static flow analysis of a software program's control flow. In one embodiment, a method, performed by a data processing system, identifies each branch point in a set of branch points in a first version of software and replaces, in each branch point in the set, a representation of a target of the branch point with a computed value that depends upon at least one prior computed value in a stream of instructions in the first version of software. Other embodiments are also described.