Software Integrity Checks Before Compilation for Malware Resistance
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Mobile software applications are vulnerable to attacks that compromise security, particularly through device-resident malware, which can modify the application and compromise personal information, necessitating improved integrity checking mechanisms.
Innovation Solution
Integrity checking techniques are integrated into software code before compilation, using stub code to verify application behavior and functionality, and additional integrity checks are inserted to ensure the application's integrity is maintained regardless of compilation processes, with obfuscation techniques to protect the integrity checking code.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Reliability
If integrity checking code is inserted into software code before compilation, then software integrity and security are improved, but device complexity and code size increase
Solution Approach 1:
The patent applies preliminary action by inserting integrity checking code into the software source code before compilation occurs. This allows the integrity checking mechanisms to be embedded in the compiled binary automatically, ensuring that verification capabilities are built-in from the start rather than added later. The stub code and integrity checks are integrated during the development phase, making the reliability enhancement inherent to the software structure.
Solution Approach 2:
The patent uses intermediary elements such as stub code and hash value generation mechanisms that act as mediators between the main software functionality and the integrity verification system. These intermediaries perform the actual integrity checking operations without requiring direct modification of the core application logic, thus maintaining software integrity while managing complexity through dedicated verification components.
2Measurement precision
If multiple integrity checks are inserted throughout the application code, then measurement precision of application behavior is improved, but device complexity increases
Solution Approach 1:
The patent applies segmentation by dividing the integrity checking process into multiple discrete checkpoints distributed throughout the application code. Each checkpoint performs a specific verification function (such as comparing hash values or validating function calls), allowing precise monitoring of application behavior at critical points without requiring a monolithic complex verification system. This segmented approach enables targeted verification where it is most needed.
Solution Approach 2:
The patent implements local quality by placing specific types of integrity checks at different locations within the code based on their functional requirements. For example, hash value comparisons are performed at specific function entry/exit points, while other checks are placed at data access points. Each location receives the appropriate verification mechanism tailored to its specific integrity needs, optimizing both precision and complexity management.
3Object-affected harmful factors
If obfuscation techniques are applied to integrity checking code, then security against malware is improved, but difficulty of detecting and measuring increases
Solution Approach 1:
The patent converts the potential harm of code analysis by malware into a benefit by applying obfuscation techniques to the integrity checking code. The same obfuscation that makes the code difficult for attackers to analyze also protects the verification mechanisms from being bypassed or understood by malicious software. This transforms the difficulty of code analysis from a vulnerability into a security feature, making it harder for malware to compromise the integrity checking system.
Data Source
AI summary
This disclosure relates to systems and methods generating and distributing protected software applications. In certain embodiments, integrity checking mechanisms may be implemented using integrity checking code in software code prior to compilation into machine code. Following compilation and execution of the application, the introduced code may check the integrity of the application by determining whether the application behaves and/or otherwise functions as expected. By introducing integrity checking in this manner, integrity checking techniques may be injected into the application prior to compilation into machine code and/or independent of the particular manner in which the application is compiled.


