Runtime Instruction Regeneration for Software Protection
Find Innovative SolutionsGenerate 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
Engineering Contradiction Analysis
1Reliability
If virtual machine obfuscation is used to protect software code, then obfuscation level is improved, but performance cost increases significantly
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.
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.
2Reliability
If traditional obfuscation techniques are applied to protect code, then code protection is improved, but performance penalty increases
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.
3Reliability
If multiple generations of runtime instructions are generated, then protection against runtime attacks is improved, but code complexity increases
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.
Data Source
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.


