Bootstrap Library Encryption for Reverse Engineering Protection
Find Innovative SolutionsGenerate 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
Engineering 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
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.
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.
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
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.
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.
3Reliability
If encryption is applied to program libraries, then code security is improved, but code execution complexity deteriorates
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.
Data Source
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.
