Boot Loader Code Obfuscation for Reverse Engineering Protection
Find Innovative SolutionsGenerate 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
Engineering Contradiction Analysis
1Reliability
If code morphing is used to obfuscate object code, then security against reverse engineering is improved, but execution time is increased
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.
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.
2Reliability
If code morphing is applied to protect software, then protection against piracy is improved, but compiler optimizations are hindered
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.
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.
3Reliability
If obfuscation is applied to entire program, then security coverage is improved, but execution performance degradation increases
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.
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.
Data Source
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.


