Virtual Instruction Handlers for Code Obfuscation

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing code protection techniques, such as obfuscation, often increase the complexity of reverse-engineering attempts but can negatively impact execution speed, and not all code requires the same level of protection.

Innovation Solution

A method that involves rewriting sections of computer software code into virtual instructions corresponding to different handlers, allowing for varying levels of obfuscation and execution speed based on specific indicators, enabling targeted protection without uniformly degrading performance.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If code obfuscation is applied to protect computer software, then reverse-engineering complexity increases, but execution speed deteriorates

Engineering Contradiction:
Improvecode protection levelVSAvoidexecution speed
Core Design Contradiction:
ReliabilityVSSpeed

Solution Approach 1:

The patent applies different obfuscation levels to different sections of code based on their sensitivity and protection requirements. Critical sections receive high obfuscation with corresponding handlers that execute slower but provide strong protection, while non-critical sections use minimal or no obfuscation to maintain fast execution. This selective approach resolves the contradiction by localizing the impact of obfuscation to only where it is necessary.

Inventive Principle:
Principle #3Local quality

Solution Approach 2:

The patent divides the code base into multiple sections with different protection requirements and applies appropriate obfuscation strategies to each segment. By segmenting the code and using section-specific handlers, the system achieves high protection for critical sections without uniformly degrading the execution speed of the entire program.

Inventive Principle:
Principle #1Segmentation

2Reliability

If uniform obfuscation is applied to all code sections, then protection level increases, but overall execution speed deteriorates

Engineering Contradiction:
Improveprotection levelVSAvoidoverall execution efficiency
Core Design Contradiction:
ReliabilityVSProductivity

Solution Approach 1:

Instead of applying uniform obfuscation, the patent implements local quality by assigning different obfuscation intensities to different code sections based on their specific protection needs. This allows the system to maintain high protection levels for critical sections while preserving execution efficiency in non-critical sections, thereby resolving the contradiction between uniform protection and overall performance.

Inventive Principle:
Principle #3Local quality

3Reliability

If high obfuscation is applied to critical sections, then security is improved, but execution time increases

Engineering Contradiction:
Improvesecurity levelVSAvoidexecution time
Core Design Contradiction:
ReliabilityVSLoss of time

Solution Approach 1:

The patent changes the obfuscation parameter (intensity level) based on the criticality of the code section. For highly critical sections, high obfuscation parameters are applied with corresponding handlers that prioritize security over speed. For less critical sections, lower obfuscation parameters are used, maintaining faster execution. This parameter-based differentiation resolves the contradiction by allowing high security where needed without unnecessarily increasing execution time elsewhere.

Inventive Principle:
Principle #35Parameter changes

Data Source

PatentEP3062256B1Flexible instructions sets for obfuscated virtual machines
Publication Date: 2019.04.03 NXP BV
  • EP3062256B1 patent drawingFigure 1
  • EP3062256B1 patent drawingFigure 2A~2B
  • EP3062256B1 patent drawingFigure 3A~3B

AI summary

A method for protecting computer software code is disclosed. In the embodiment, the method involves receiving instructions corresponding to computer software code for an application, the instructions including a first section of instructions to protect that is indicated by a first indicator and a second section of the instructions to protect that is indicated by a second indicator, rewriting the first section of instructions into a first section of virtual instructions, and rewriting the second section of instructions into a second section of virtual instructions, wherein the first section of instructions includes a first virtual instruction that corresponds to a first handler and the second section of virtual instructions includes a second virtual instruction that corresponds to a second handler, the first handler having different properties than the second handler.