IP Library Granted Patent US 10,255,414
Granted Patent B2
US 10,255,414 · App. 14/732,312 · Granted Apr 9, 2019

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 10,255,414
App. No.
14/732,312
Granted
Apr 9, 2019
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 (27)

1. A method performed by a computer system comprising a processor and a non-transitory computer-readable storage medium storing instructions that when executed by the processor, cause the processor to perform the method, the method comprising:

determining that a computer program has been tampered with;

setting, based on the determination, a plurality of first variables distributed in a first plurality of different locations of the computer program and stored in memory associated with the processor executing the computer program to indicate that the computer program has been tampered with;

receiving a request from the computer program to perform a first operation;

in response to receiving the request, analyzing at least a quasi-random subset of the plurality of first variables to determine that the computer program has been tampered with;

in response to testing the at least quasi-random subset of the plurality of first variables, setting a plurality of second variables distributed in a second plurality of different locations of the computer program to a state indicating that the computer program has been tampered with; and

implementing, based on the analysis, at least one protective response.

2. The method of claim 1 , wherein determining that the computer program has been tampered with comprises analyzing the computer program to determine that a portion of the computer program has been altered.

3. The method of claim 1 , wherein determining that the computer program has been tampered with comprises analyzing the computer program to determine that a watermark included in the computer program has been altered.

4. The method of claim 1 , wherein the at least a subset of the plurality of first variables comprises discontiguous variables within the computer program.

5. The method of claim 1 , where the method further comprises setting, in response to analyzing the at least a subset of the plurality of first variables, at least one third variable associated with the computer program stored in memory associated with the processor executing the computer program to indicate that the computer program has been tampered with.

6. The method of claim 1 , wherein the at least one protective response comprises performing a second operation different than the first operation.

7. The method of claim 1 , wherein the at least one protective response comprises sending an indication to a remote system that the computer program has been tampered with.

8. The method of claim 1 , wherein the at least one protective response comprises returning, in response to the request, an error indication to the computer program.

9. A non-transitory computer-readable storage medium storing instructions that when executed by a system comprising a processor, cause the processor to perform a method comprising:

setting, based on the determination, a plurality of first variables distributed in a first plurality of different locations of the computer program and stored in memory associated with the processor executing the computer program to indicate that the computer program has been tampered with;

receiving a request from the computer program to perform a first operation;

in response to receiving the request, analyzing at least a quasi-random subset of the plurality of first variables to determine that the computer program has been tampered with;

in response to testing the at least quasi-random subset of the plurality of first variables, setting a plurality of second variables distributed in a second plurality of different locations of the computer program to a state indicating that the computer program has been tampered with; and

implementing, based on the analysis, at least one protective response.

10. The non-transitory computer-readable storage medium of claim 9 , wherein determining that the computer program has been tampered with comprises analyzing the computer program to determine that a portion of the computer program has been altered.

11. The non-transitory computer-readable storage medium of claim 9 , wherein determining that the computer program has been tampered with comprises analyzing the computer program to determine that a watermark included in the computer program has been altered.

12. The non-transitory computer-readable storage medium of claim 9 , wherein the at least a subset of the plurality of first variables comprises discontiguous variables within the computer program.

13. The non-transitory computer-readable storage medium of claim 9 , wherein the method further comprises setting, in response to analyzing the at least a subset of the plurality of first variables, at least one third variable associated with the computer program stored in memory associated with the processor executing the computer program to indicate that the computer program has been tampered with.

14. The non-transitory computer-readable storage medium of claim 9 , wherein the at least one protective response comprises performing a second operation different than the first operation.

15. The non-transitory computer-readable storage medium of claim 9 , wherein the at least one protective response comprises sending an indication to a remote system that the computer program has been tampered with.

16. The non-transitory computer-readable storage medium of claim 9 , wherein the at least one protective response comprises returning, in response to the request, an error indication to 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 →
Cited By (2)
US 12,323,269 US 12,399,801