Pseudo-Static Link Library Loader for Application Protection
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Existing application programs that use dynamic link libraries (DLLs) are vulnerable to reverse engineering, as their APIs are openly accessible, compromising intellectual property protection and making it difficult to maintain and update libraries without introducing new issues.
Innovation Solution
A method that converts a dynamic link library into a 'pseudo-static' link library, using a special loader to redirect API references and integrate additional security measures, effectively masking the DLL's presence and functionality within the application, similar to static libraries, while maintaining compatibility across development environments.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Ease of operation
If dynamic link libraries (DLLs) are used to distribute libraries, then ease of operation and adaptability are improved, but protection against reverse engineering deteriorates as APIs become openly accessible
Solution Approach 1:
The patent introduces a loader as an intermediary component that sits between the application and the DLL. The loader masks the actual DLL interfaces by providing a wrapper layer, preventing direct access to the original APIs while maintaining functional connectivity. This resolves the contradiction by enabling DLL usage for ease of operation while the loader intermediary protects against reverse engineering.
Solution Approach 2:
The patent creates a copy or replica of the DLL interface through the loader. Instead of exposing the original DLL APIs directly, the loader implements a copied interface that mimics the original functionality but can be protected separately. This allows the application to operate with DLL-like ease while the copied interface can be protected against reverse engineering.
2Object-affected harmful factors
If static link libraries are used, then protection against reverse engineering is improved, but device complexity and ease of operation worsen due to separate installation requirements
Solution Approach 1:
The patent merges the advantages of static and dynamic libraries by combining the protection mechanism of static libraries with the operational flexibility of dynamic libraries. The loader (which can be distributed with the application) combines with the DLL at runtime, creating a unified protected system that maintains the benefits of both approaches without their respective drawbacks.
Solution Approach 2:
The patent segments the library system into two parts: the protected loader component that can be distributed with the application, and the separate DLL that provides dynamic functionality. This segmentation allows the critical interface layer to be protected while maintaining the operational advantages of dynamic libraries, reducing overall system complexity compared to full static linking.
3Loss of time
If multiple applications use the same dynamic library, then loss of time is reduced through shared resources, but loss of substance increases due to multiple copies requiring more disk space
Solution Approach 1:
The loader is designed as a universal component that can work with multiple different DLLs. Instead of each application needing its own protected copy of the library, a single universal loader can load and protect different DLL instances, reducing disk space requirements while maintaining the time efficiency of shared library usage.
Data Source
Figure 1
Figure 2
Figure 3
AI summary
A Method for protecting an application program executable on a computer against reverse engineering, said application is created to run with at least one selected dynamic link library (DLL) on said computer, comprises the steps of: removing the references from the application to the used dynamic link library to be run with; adding a specific library loader to the executable application program, said loader either contains or has access to said dynamic link library; setting modified references to said dynamic link library in the correct places of the application; and, upon loading said application program and said loader into the main memory of said computer, initializing said dynamic link library by said library loader; thereby linking said library to the application program like a static link library. The library loader and the pseudo-statically linked library (PLL) could be embedded into the application program, thereby using unused space within the application. The protected application presents itself as a monolithic application without the vulnerable interface to a DLL.