Compiler Obfuscation via Live Variable Analysis

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing compiler technologies face challenges in effectively protecting computer program values from reverse engineering, as standard obfuscation techniques rely on static parameters that can be easily revealed through dynamic analysis, leading to performance penalties and increased vulnerability to attacks.

Innovation Solution

A compiler device and method that perform live variable analysis to select and encode critical variables using static variables, making it difficult for automated analysis to reverse engineer the obfuscated values by using dynamic encoding based on liveness regions and encoding parameters.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Ease of manufacture

If standard obfuscation techniques using static parameters are used, then implementation is simple, but values are easily revealed through dynamic analysis

Engineering Contradiction:
Improveease of implementationVSAvoidprotection effectiveness
Core Design Contradiction:
Ease of manufactureVSReliability

Solution Approach 1:

The patent transforms static obfuscation parameters into dynamic ones by using live variable analysis to determine encoding parameters that change based on program execution context. Variables are encoded using other variables as encoding parameters, and these encoding parameters are selected dynamically based on liveness regions, making the obfuscation adaptive and resistant to static analysis attacks.

Inventive Principle:
Principle #15Dynamics

Solution Approach 2:

The patent changes the parameters used in obfuscation from fixed static values to dynamic variable values determined by live variable analysis. The encoding parameters are selected from variables that are not live in the current liveness region, creating a parameter selection mechanism that adapts to the program's execution state and prevents easy reverse engineering.

Inventive Principle:
Principle #35Parameter changes

2Reliability

If multiple encodings are used to protect the whole program, then protection strength increases, but performance penalty increases

Engineering Contradiction:
Improveprotection strengthVSAvoidprogram performance
Core Design Contradiction:
ReliabilityVSProductivity

Solution Approach 1:

The patent applies encoding locally to specific variables based on their liveness regions rather than encoding the entire program uniformly. By selecting encoding parameters from variables not live in the current region and applying encoding only where needed, the patent provides targeted protection that minimizes performance overhead while maintaining security.

Inventive Principle:
Principle #3Local quality

Solution Approach 2:

The patent applies partial encoding to critical variables identified through live variable analysis rather than encoding all variables throughout the program. This selective approach applies protection only where necessary based on variable liveness, reducing the overall performance penalty while maintaining adequate protection strength.

Inventive Principle:
Principle #16Partial or excessive action

3Productivity

If a single encoding is used, then performance is maintained, but reverse engineering becomes easier

Engineering Contradiction:
Improveprogram performanceVSAvoidreverse engineering difficulty
Core Design Contradiction:
ProductivityVSDifficulty of detecting and measuring

Solution Approach 1:

The patent creates dynamic encoding by selecting different encoding parameters based on live variable analysis results. Instead of using a single static encoding, the system dynamically chooses which variable to use as an encoding parameter based on the current liveness region, making reverse engineering difficult while maintaining performance through efficient parameter selection.

Inventive Principle:
Principle #15Dynamics

Solution Approach 2:

The patent uses live variable analysis as an intermediary mechanism to select encoding parameters dynamically. This intermediary analysis determines which variables are suitable for encoding based on their liveness regions, creating a bridge between performance considerations and security requirements without directly implementing complex multiple encodings.

Inventive Principle:
Principle #24Intermediary (Mediator)

4Reliability

If masking variables are added for protection, then security improves, but automated analysis can easily identify and remove them

Engineering Contradiction:
Improvesecurity protectionVSAvoidmasking variable identification
Core Design Contradiction:
ReliabilityVSDifficulty of detecting and measuring

Solution Approach 1:

The patent makes masking variables serve multiple functions: they act as both encoding parameters for protection and as legitimate program variables with their own liveness regions. This multi-functionality makes it difficult for automated analysis to distinguish between masking variables and regular program variables, as both serve essential computational purposes.

Inventive Principle:
Principle #6Universality (Multi-functionality)

Solution Approach 2:

The patent uses the program's own variables and their liveness regions to provide the masking function, rather than introducing external dedicated masking variables. The variables already present in the program serve the dual purpose of computation and obfuscation, making the protection self-providing and harder to detect through automated analysis.

Inventive Principle:
Principle #25Self-service

Data Source

PatentUS11409848B2Compiler device with masking function
Publication Date: 2022.08.09 KONINKLIJKE PHILIPS NV
  • US11409848B2 patent drawing
  • US11409848B2 patent drawing
  • US11409848B2 patent drawing

AI summary

Some embodiments are directed to a compiler device (400) arranged for obfuscation of a computer program. The compiler device performs a live variable analysis on the computer program representation, and modifies the computer program representation to encode a first variable using at least a second variable as an encoding parameter.