Dynamic Software Protection Injection via OS Manifest

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Traditional software protection mechanisms are static and immutable, making them vulnerable to tampering, reverse engineering, and malicious use, as they are fixed during the creation process and do not adapt to evolving threats.

Innovation Solution

A manifest stored on a storage medium lists protection categories, which are read by the operating system to inject dynamic protection mechanisms into the binary object in computer memory, allowing for updates and flexible protection strategies that change with each load, even on different hardware configurations.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Ease of manufacture

If protection mechanisms are fixed during software creation, then the software structure is simple and easy to manufacture, but the protection becomes vulnerable to tampering and reverse engineering over time

Engineering Contradiction:
Improvesoftware protection implementationVSAvoidprotection against tampering
Core Design Contradiction:
Ease of manufactureVSReliability

Solution Approach 1:

The patent applies dynamics by making protection mechanisms changeable and updatable. Instead of fixed protection code embedded in the binary, the system uses a manifest that lists protection categories and allows the operating system to inject different protection mechanisms at load time. This enables the protection to adapt and evolve, preventing reverse engineering while maintaining ease of implementation through the manifest structure.

Inventive Principle:
Principle #15Dynamics

2Adaptability or versatility

If protection mechanisms are updated separately from the binary, then the protection can adapt to new threats, but the system complexity increases

Engineering Contradiction:
Improveprotection mechanism updatesVSAvoidprotection system structure
Core Design Contradiction:
Adaptability or versatilityVSDevice complexity

Solution Approach 1:

The patent segments the protection system into distinct components: the binary object contains only the manifest listing protection categories, while the actual protection mechanisms are separated and managed by the operating system. This segmentation allows independent updates of protection mechanisms without modifying the binary, improving adaptability while keeping the binary structure simple.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The operating system acts as an intermediary between the binary manifest and the protection mechanisms. The manifest lists what protections are needed, and the OS handles the injection and execution of actual protection code. This intermediary approach simplifies the binary while enabling dynamic protection updates through the OS's protection mechanism manager.

Inventive Principle:
Principle #24Intermediary (Mediator)

3Adaptability or versatility

If the same protection is applied to all hardware configurations, then the protection mechanism is simple, but it cannot adapt to different security requirements of different systems

Engineering Contradiction:
Improvehardware configuration adaptationVSAvoidprotection configuration
Core Design Contradiction:
Adaptability or versatilityVSDevice complexity

Solution Approach 1:

The patent applies local quality by allowing different protection mechanisms to be selected based on the specific hardware configuration and security requirements of each system. The manifest lists protection categories, and the operating system chooses appropriate mechanisms from available options, enabling tailored protection for different hardware platforms without complicating the binary structure.

Inventive Principle:
Principle #3Local quality

Data Source

PatentUS8001596B2Software protection injection at load time
Publication Date: 2011.08.16 MICROSOFT TECHNOLOGY LICENSING LLC
  • US8001596B2 patent drawing
  • US8001596B2 patent drawing
  • US8001596B2 patent drawing

AI summary

A method to apply a protection mechanism to a binary object includes using operating system resources to load a binary object from a storage medium along with a manifest and a digital signature. Authentication of the binary object is performed using the digital signature and the manifest is read to determine a category of protection for the binary object. The operating system selects a protection mechanism corresponding to the protection category and injects protection mechanism code, along with the binary object into a binary image on computer RAM. When the binary image is accessed, the protection mechanism executes and either allows full access and functionality to the binary object or prevents proper access and operation of the binary object. The protection mechanisms may be updated independently from the information on the storage medium.