Runtime Instruction Regeneration for Software Protection

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing software protection techniques, such as obfuscation and virtual machine obfuscation, are often bypassed by attackers and come with significant performance costs, making them unsuitable for processor-intensive applications like computer games.

Innovation Solution

A computer-implemented method and system that generates a secured software application by transforming source instructions into multiple generations of runtime instructions, each generation being functionally equivalent but differing from others, thereby preventing persistent attacks and maintaining performance.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If virtual machine obfuscation is used to protect software code, then obfuscation level is improved, but performance cost increases significantly

Engineering Contradiction:
Improveobfuscation levelVSAvoidperformance
Core Design Contradiction:
ReliabilityVSProductivity

Solution Approach 1:

The patent applies dynamics by generating multiple generations of runtime instructions that vary over time. Instead of using static obfuscation layers, the system dynamically regenerates instructions with different characteristics (different register allocations, instruction ordering, or optimization levels) to maintain high obfuscation while allowing performance-optimized executions of the same functional code.

Inventive Principle:
Principle #15Dynamics

Solution Approach 2:

The patent segments the code protection into separate generations of runtime instructions. Each generation can be independently optimized and varied, allowing the system to maintain security through multiple versions while executing individual generations efficiently. This segmentation enables the system to avoid the performance penalty of full virtual machine obfuscation by using native instruction execution for each generation.

Inventive Principle:
Principle #1Segmentation

2Reliability

If traditional obfuscation techniques are applied to protect code, then code protection is improved, but performance penalty increases

Engineering Contradiction:
Improvecode protectionVSAvoidperformance
Core Design Contradiction:
ReliabilityVSProductivity

Solution Approach 1:

The patent changes parameters of the runtime instructions between generations (such as register assignments, instruction ordering, or optimization levels) to create variation while maintaining functional equivalence. This allows the same code to be executed with different parameters in each generation, providing obfuscation without the performance penalty of static transformation layers.

Inventive Principle:
Principle #35Parameter changes

3Reliability

If multiple generations of runtime instructions are generated, then protection against runtime attacks is improved, but code complexity increases

Engineering Contradiction:
Improveprotection against runtime attacksVSAvoidcode complexity
Core Design Contradiction:
ReliabilityVSDevice complexity

Solution Approach 1:

The patent uses copying by creating multiple copies (generations) of runtime instructions that are functionally equivalent but differ in their representation. Each generation is a copy of the functional logic with varied implementation details, making it difficult for attackers to track and patch specific instruction sequences while maintaining the same executable functionality.

Inventive Principle:
Principle #26Copying

Data Source

PatentUS20250165227A1Protecting Software
Publication Date: 2025.05.22 PROMON
  • US20250165227A1 patent drawing
  • US20250165227A1 patent drawing
  • US20250165227A1 patent drawing

AI summary

Methods and systems for generating a secured software application (108) involve receiving a source software application (100); identifying one or more sets of source instructions (102) within it and for each of the sets of source instructions (102) generating data (106) representative of the set of source instructions. A secured software application (108) is generated having the data (106) and a runtime engine (114). The runtime engine (114) has code for processing the data (106), during a runtime of the secured software application (108), to generate (213), for each of the sets of source instructions (102), a respective plurality of generations of a respective set of runtime instructions. Each generation of the respective set of runtime instructions is functionally equivalent to the respective set of source instructions and at least two of the generations of the respective set of runtime instructions differ from each other.