Software self-checking systems and methods
First Claim
Patent Images
1. A non-transitory computer-readable storage medium, the computer-readable storage medium storing programming instructions that, if executed by a processor of a computer system, are operable to cause the computer system to perform a method comprising:
- loading a memory address obfuscating value;
calculating an address locator value at least in part based on said memory address obfuscating value;
reading a first portion of memory beginning at an address determined by said calculated address locator value, said first portion of memory at least in part used to store instructions associated with a currently executing program;
calculating a first integrity check value based on the contents of said first portion of memory;
comparing said first calculated integrity check value to a first expected check value; and
initiating one or more response actions at least in part based on the results of said step of comparing said first calculated check value.
3 Assignments
0 Petitions
Accused Products
Abstract
Software self-checking mechanisms are described for improving software tamper resistance and/or reliability. Redundant tests are performed to detect modifications to a program while it is running. Modifications are recorded or reported. Embodiments of the software self-checking mechanisms can be implemented such that they are relatively stealthy and robust, and so that it they are compatible with copy-specific static watermarking and other tamper-resistance techniques.
101 Citations
66 Claims
-
1. A non-transitory computer-readable storage medium, the computer-readable storage medium storing programming instructions that, if executed by a processor of a computer system, are operable to cause the computer system to perform a method comprising:
loading a memory address obfuscating value; calculating an address locator value at least in part based on said memory address obfuscating value; reading a first portion of memory beginning at an address determined by said calculated address locator value, said first portion of memory at least in part used to store instructions associated with a currently executing program; calculating a first integrity check value based on the contents of said first portion of memory; comparing said first calculated integrity check value to a first expected check value; and initiating one or more response actions at least in part based on the results of said step of comparing said first calculated check value. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33)
-
34. A method comprising:
-
calculating an address locator value at least in part based on said memory address obfuscating value; reading a first portion of memory beginning at an address determined by said calculated address locator value, said first portion of memory at least in part used to store instructions associated with a currently executing program; calculating a first integrity check value based on the contents of said first portion of memory; comparing said first calculated integrity check value to a first expected check value; and initiating one or more response actions at least in part based on the results of said step of comparing said first calculated check value. - View Dependent Claims (35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66)
-
Specification