Bootstrap Library Encryption for Reverse Engineering Protection

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Byte code used in control devices for elevators and escalators is vulnerable to reverse engineering, allowing access codes to be misused, and existing protection methods like obfuscation are not sufficient to prevent reverse engineering.

Innovation Solution

A method involving the obfuscation and encryption of program libraries, followed by inclusion in a bootstrap library and a native code launcher executable, using RC4 encryption and decryption, to protect the code from reverse engineering and ensure secure execution.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Adaptability or versatility

If byte code is used for machine independent code, then code portability is improved, but code protection against reverse engineering deteriorates

Engineering Contradiction:
Improvecode portabilityVSAvoidreverse engineering vulnerability
Core Design Contradiction:
Adaptability or versatilityVSObject-affected harmful factors

Solution Approach 1:

The patent implements multi-layer nesting of protection mechanisms: the byte code is embedded within encrypted data structures, which are further protected by encryption keys stored in protected sections of the executable. The bootstrap loader itself is encrypted and nested within the final executable, creating nested layers of abstraction that maintain portability while preventing reverse engineering.

Inventive Principle:
Principle #7Nested doll (Nesting)

Solution Approach 2:

The patent introduces an intermediary bootstrap loader that acts as a mediator between the encrypted byte code and the virtual machine. This intermediary component decrypts and loads the byte code at runtime, preventing direct access to the original code while maintaining executable functionality. The intermediary layer effectively blocks reverse engineering tools from accessing the actual byte code.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Difficulty of detecting and measuring

If obfuscation is applied to C# source code, then reverse engineering difficulty is improved, but code readability and decompilation resistance deteriorates only partially

Engineering Contradiction:
Improvereverse engineering difficultyVSAvoidcode protection effectiveness
Core Design Contradiction:
Difficulty of detecting and measuringVSEase of manufacture

Solution Approach 1:

The patent transforms the code from a readable state to an encrypted binary state, fundamentally changing its parameters. The byte code is encrypted using cryptographic algorithms, changing its structure from human-readable text to binary data that requires decryption. This parameter change makes reverse engineering significantly more difficult while preserving the ability to execute the code through the bootstrap loader.

Inventive Principle:
Principle #35Parameter changes

Solution Approach 2:

The patent applies preliminary encryption and obfuscation to the byte code before it is executed by the virtual machine. The code is pre-processed into an encrypted format, and the decryption occurs automatically at runtime through the bootstrap loader. This preliminary action ensures that the code is protected before any reverse engineering attempt can occur.

Inventive Principle:
Principle #10Preliminary action

3Reliability

If encryption is applied to program libraries, then code security is improved, but code execution complexity deteriorates

Engineering Contradiction:
Improvecode securityVSAvoidexecution complexity
Core Design Contradiction:
ReliabilityVSDevice complexity

Solution Approach 1:

The patent implements self-service decryption where the encrypted byte code contains its own decryption key or can derive its decryption key from embedded information. The bootstrap loader automatically performs the decryption process without requiring external intervention or complex key management systems. This self-service approach maintains high security while minimizing execution complexity.

Inventive Principle:
Principle #25Self-service

Data Source

PatentUS10482221B2Protecting a computer program against reverse engineering
Publication Date: 2019.11.19 INVENTIO AG
  • US10482221B2 patent drawing

AI summary

A method of protecting a computer program against reverse engineering includes: obfuscating and/or encrypting at least one program library of the computer program, wherein the at least one program library contains byte code adapted for being executed by a virtual machine; including the at least one obfuscated and/or encrypted library into a bootstrap library, the bootstrap library including a bootstrap module adapted for loading the at least one program library into the virtual machine and for starting the computer program; encrypting the bootstrap library; and including the encrypted bootstrap library into a native code launcher executable including a launcher module adapted for starting the virtual machine, decrypting the bootstrap library and for loading the bootstrap library into the virtual machine.