Boot Loader Code Obfuscation for Reverse Engineering Protection

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing software security methods, particularly obfuscation techniques, face challenges in providing comprehensive protection against reverse engineering and piracy, as they often compromise execution time and are limited to critical program portions, making them inefficient for full program application protection.

Innovation Solution

An obfuscation technique that modifies compiled code by using a set of obfuscation functions, where a random number or device characteristics determine which obfuscated version is used, ensuring each installation receives a unique, semantically equivalent but distinct code instance, and can be combined with masking for enhanced security.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If code morphing is used to obfuscate object code, then security against reverse engineering is improved, but execution time is increased

Engineering Contradiction:
ImprovesecurityVSAvoidexecution time
Core Design Contradiction:
ReliabilityVSProductivity

Solution Approach 1:

The patent applies preliminary action by performing code morphing transformations during the compilation process before the code is executed. The compiler transforms critical code sections into morphed versions that are semantically equivalent but structurally different, so that when the code runs, no additional transformation time is needed - the protective transformations are already in place.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The patent applies local quality by selectively applying code morphing only to critical portions of the program rather than the entire codebase. The compiler identifies security-critical sections and applies morphing transformations only there, leaving non-critical code unchanged. This localized approach maintains security for important functions while minimizing the impact on overall execution performance.

Inventive Principle:
Principle #3Local quality

2Reliability

If code morphing is applied to protect software, then protection against piracy is improved, but compiler optimizations are hindered

Engineering Contradiction:
ImproveprotectionVSAvoidcompiler optimizations
Core Design Contradiction:
ReliabilityVSProductivity

Solution Approach 1:

The patent performs morphing transformations as a preliminary step during compilation, before the code is linked and executed. By establishing the transformed code structure upfront, the compiler can then apply optimizations to the morphed code without needing to reverse-engineer the original structure, thus maintaining optimization capability while providing protection.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The patent selectively applies morphing only to critical code sections that require protection, leaving other sections in their original form. This allows the compiler to freely optimize non-critical sections while the morphed critical sections receive enhanced protection, balancing security needs with optimization opportunities.

Inventive Principle:
Principle #3Local quality

3Reliability

If obfuscation is applied to entire program, then security coverage is improved, but execution performance degradation increases

Engineering Contradiction:
Improvesecurity coverageVSAvoidexecution performance
Core Design Contradiction:
ReliabilityVSProductivity

Solution Approach 1:

The patent implements selective code morphing that applies protection only to critical portions of the program identified by the compiler. Non-critical code sections remain untransformed and can execute at full speed. This localized approach ensures comprehensive security coverage for important functions while maintaining high execution performance for the overall program.

Inventive Principle:
Principle #3Local quality

Solution Approach 2:

The patent applies partial action by morphing only the necessary critical sections rather than the entire program. This partial transformation provides sufficient security coverage for protected sections without incurring the performance penalty of transforming all code, achieving an optimal balance between security and performance.

Inventive Principle:
Principle #16Partial or excessive action

Data Source

PatentUS8881290B2Method and apparatus for computer code obfuscation and deobfuscation using boot installation
Publication Date: 2014.11.04 APPLE INC
  • US8881290B2 patent drawing
  • US8881290B2 patent drawing
  • US8881290B2 patent drawing

AI summary

In the field of computer software, obfuscation techniques for enhancing software security are applied to compiled (object) software code. The obfuscation results here in different versions (instances) of the obfuscated code being provided to different installations (recipient computing devices). The complementary code execution uses a boot loader or boot installer-type program at each installation which contains the requisite logic. Typically, the obfuscation results in a different instance of the obfuscated code for each intended installation (recipient) but each instance being semantically equivalent to the others. This is accomplished in one version by generating a random value or other parameter during the obfuscation process, and using the value to select a particular version of the obfuscating process, and then communicating the value along with boot loader or installer program software.