IP Library Granted Patent US 7,823,135
Granted Patent B2
US 7,823,135 · App. 11/102,306 · Granted Oct 26, 2010

Software self-defense systems and methods

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 7,823,135
App. No.
11/102,306
Granted
Oct 26, 2010
Kind
B2
Abstract

Systems and methods are disclosed for protecting a computer program from unauthorized analysis and modification. Obfuscation transformations can be applied to the computer program's local structure, control graph, and/or data structure to render the program more difficult to understand and/or modify. Tamper-resistance mechanisms can be incorporated into the computer program to detect attempts to tamper with the program's operation. Once an attempt to tamper with the computer program is detected, the computer program reports it to an external agent, ceases normal operation, and/or reverses any modifications made by the attempted tampering. The computer program can also be watermarked to facilitate identification of its owner. The obfuscation, tamper-resistance, and watermarking transformations can be applied to the computer program's source code, object code, or executable image.

Claims (12)

1. A method for obfuscating a computer program, the computer program containing a sequence of programming instructions, the method including:

incorporating one or more programming constructs into the computer program, the programming constructs being operable to designate one or more memory locations for storage of data, and wherein the one or more memory locations are logically located between a first memory location and a second memory location, the first memory location containing at least part of a programming instruction from the sequence of programming instructions, and the second memory location containing at least part of a programming instruction from the sequence of programming instructions;

incorporating one or more memory allocation statements into the computer program, the memory allocation statements being operable to allocate memory for storage of data, and wherein at least a portion of the memory allocated for storage of data includes one or more of the memory locations designated by the programming constructs for storage of data;

storing data within the memory allocated for storage of data,

whereby the distinction between an area of memory primarily containing programming instructions and an area of memory primarily containing data is at least somewhat obscured.

2. A method as in claim 1 , in which the data include one or more programming instructions.

3. A method as in claim 1 , further including:

deallocating the memory allocated for storage of data; and

reallocating the memory allocated for storage of data.

4. A method as in claim 1 , whereby the computer program is rendered more resistant to reverse engineering, decompilation, or deobfuscation.

5. A method as in claim 1 , in which the data include data for watermarking the computer program.

6. A method as in claim 1 , in which the data include rules and/or controls for governing use or operation of the computer program.

Assignments (3)
PATENT ASSIGNMENT Recorded May 27, 2025
From: INTERTRUST TECHNOLOGIES CORPORATION
To: INNOVATION TECHNOLOGIES PARTNERS LP
Reel/Frame 071408/0320 →
RELEASE OF SECURITY INTEREST Recorded Feb 14, 2023
From: ORIGIN FUTURE ENERGY PTY LTD.
To: INTERTRUST TECHNOLOGIES CORPORATION
Reel/Frame 062747/0742 →
SECURITY INTEREST Recorded Mar 18, 2020
From: INTERTRUST TECHNOLOGIES CORPORATION
To: ORIGIN FUTURE ENERGY PTY LTD
Reel/Frame 052189/0343 →