DLL Manager Injection for Reboot-less Software Upgrades

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing DLL injection methods require rebooting or recycling of the target process to update or delete DLL files, disrupting services, especially in critical software environments like database servers.

Innovation Solution

A computer-implemented method using a DLL manager that allocates virtual memory, writes data and code, and executes a remote thread to load, unload, and exit DLL files without rebooting the operating system, allowing for seamless updates and uninstalls.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If DLL files are updated or deleted using existing injection methods, then the software can be updated, but the operating system must be rebooted or the target process recycled, disrupting services

Engineering Contradiction:
Improveservice continuityVSAvoiddowntime during update
Core Design Contradiction:
ReliabilityVSLoss of time

Solution Approach 1:

The patent implements dynamic DLL management by creating a remote thread within the target process that can load and unload DLL files at runtime. This dynamic approach allows the system to update DLL files without static linking constraints, enabling updates while the process remains active and services continue to run.

Inventive Principle:
Principle #15Dynamics

Solution Approach 2:

The patent introduces a DLL manager as an intermediary component that mediates between the target process and DLL files. The DLL manager handles loading, unloading, and updating of DLL files through controlled entry points, allowing updates to occur without requiring process recycling or system reboot, thus maintaining service continuity.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Adaptability or versatility

If DLL files are loaded into the target process, then new features and functionality are introduced, but memory consumption increases

Engineering Contradiction:
Improvesoftware functionalityVSAvoidmemory usage
Core Design Contradiction:
Adaptability or versatilityVSQuantity of substance

Solution Approach 1:

The patent extracts DLL functionality from the main executable, allowing features to be loaded dynamically only when needed. The DLL manager loads specific DLL files containing required functions, classes, and resources into the target process's address space, enabling the base program to remain compact while maintaining full functionality through selective loading.

Inventive Principle:
Principle #2Taking out (Extraction)

Solution Approach 2:

The system dynamically loads DLL files into the target process only when specific functionality is required, rather than statically linking all features at compile time. This allows the program to adapt its memory footprint based on actual runtime needs, loading additional features on-demand and unloading them when no longer required.

Inventive Principle:
Principle #15Dynamics

Data Source

PatentUS11681520B2Software upgrading using dynamic link library injection
Publication Date: 2023.06.20 INTERNATIONAL BUSINESS MACHINE CORPORATION
  • US11681520B2 patent drawing
  • US11681520B2 patent drawing
  • US11681520B2 patent drawing

AI summary

Systems, methods, and computer programming products for loading and upgrading software using DLL files injected into a running target program process by a DLL manager of an injection program. Background services of the injection program allocate virtual memory for the code and data within the memory addresses dedicated to the target program process and injects the code and data by writing the code and data of the DLL manager to the virtual memory. A remote thread created within the target program process, controlled by the injection program, executes the DLL manager code, allowing the DLL manager to load and unload DLL files within the target program process. During runtime of the target program process the software can be upgraded, without rebooting the OS executing the target program process, by instructing the DLL manager to unload the DLL file(s), and load and/or re-load updated DLL file(s) within the target program process.