IP Library Granted Patent US 8,407,523
Granted Patent B2
US 8,407,523 · App. 12/477,051 · Granted Mar 26, 2013

Method for protecting software programs

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 8,407,523
App. No.
12/477,051
Granted
Mar 26, 2013
Kind
B2
Abstract

In order to protect a software program, at least one corruption function is included in the program. Also included in the program is at least one instruction that causes the program to be directed to the corruption function. An available breakpoint is then set such that, when the starting location of the corruption function is reached, an exception is generated and the handling of the exception causes the corruption function not to run. This has the effect that, if a malicious user attempts to use the available hardware breakpoint to perform unauthorized actions on the software program, the corruption function will run, and the software program will be unusable.

Claims (29)

1. A method of protecting a software program for execution on hardware, wherein the software program is intended for use on hardware having a known number of available instruction breakpoints, the method comprising:

including in the program at least one corruption function having a starting location;

including in the program at least one instruction that upon execution on hardware, causes the program to be directed to the corruption function;

including in the program additional code that, upon execution on hardware, causes the program to set an available hardware breakpoint such that, when the program has been directed to the corruption function and the starting location is reached during execution on hardware, an exception is generated and the handling of the exception generates a return instruction so that the normal running of the program is resumed, causing the corruption function not to run;

wherein:

the at least one corruption function comprises a plurality of corruption functions, each having a respective starting location, one corruption function being included for each of said available instruction breakpoints, each of the corruption functions comprising blocks of code which, if executed, adversely affect execution of the program;

the at least one instruction that causes the program to be directed to the corruption function comprises a plurality of instructions, with for each of the corruption functions there being at least one instruction that causes the program to be directed to that corruption function; and

wherein the additional code that causes the program to set the available hardware breakpoint includes code to set each available instruction breakpoint such that, when the program has been directed to one of the corruption functions and the respective one of said starting locations is reached, a respective exception is generated, and the handling of each exception generates a return instruction so that the normal running of the program is resumed, so that the respective corruption function does not run.

2. A method as claimed in either of claims 1 , wherein the corruption function causes

random data to be written to a processor stack.

3. A method as claimed in either of claims 1 , wherein the corruption function causes data to be written to random locations in a processor stack.

4. A method as claimed in claim 1 , wherein the at least one instruction causes the program to be directed to the corruption function only when a non-deterministic condition is met.

5. A method as claimed in claim 4 , wherein the non-deterministic condition relates to lower bits of a timestamp counter value.

6. A method as claimed in claim 1 , wherein the starting instructions of the corruption

functions are placed so that they cannot be encompassed by a single breakpoint.

7. A computer program product including program code stored in a non-transitory computer readable memory and executable on hardware,

comprising:

at least one corruption function having a starting location in computer memory;

at least one instruction that causes the program to be directed to the corruption function; and

code for setting an available hardware breakpoint such that, when the program has been directed to the corruption function and the starting location in computer memory is reached, an exception is generated and the handling of the exception generates a return instruction so that the normal running of the program is resumed, causing the corruption function not to run;

wherein the computer program product is configured for use on hardware having a known number of available instruction breakpoints, and wherein,

the at least one corruption function comprises a plurality of corruption functions, each having a respective starting instruction, one corruption function being included for each of said available instruction breakpoints, each of the corruption functions comprising blocks of code which, if executed, adversely affect execution of the program;

the at least one instruction comprises a plurality of instructions, with, for each corruption function, at least one instruction that causes the program to be directed to that corruption function; and

the code for setting each available instruction breakpoint sets each available instruction breakpoint such that, when the program has been directed to one of the corruption functions and the respective one of said starting instructions is reached, a respective exception is generated, and the handling of each exception generates a return instruction so that normal running of the program is resumed, so that the respective corruption function does not run.

8. A computer program product as claimed in claim 7 , wherein the corruption function causes random data to be written to a processor stack.

9. A computer program product as claimed in claim 7 , wherein the corruption function causes data to be written to random locations in a processor stack.

10. A computer program product as claimed in claim 7 , wherein the at least one instruction causes the program to be directed to the corruption function only when a non-deterministic condition is met.

11. A computer program product as claimed in claim 10 , wherein the non-deterministic condition relates to lower bits of a timestamp counter value.

12. A computer program product as claimed in claim 7 , wherein the starting instructions of the corruption functions are placed so that they cannot be encompassed by a single breakpoint.

Assignments (6)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 10, 2026
From: VERIMATRIX SA
To: GUARDSQUARE NV
Reel/Frame 074027/0115 →
CHANGE OF NAME Recorded Dec 24, 2025
From: INSIDE SECURE
To: VERIMATRIX
Reel/Frame 073309/0965 →
SECURITY INTEREST Recorded Feb 27, 2019
From: INSIDE SECURE
To: GLAS SAS, AS SECURITY AGENT
Reel/Frame 048449/0887 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 22, 2017
From: METAFORIC LIMITED
To: INSIDE SECURE
Reel/Frame 042459/0874 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 8, 2015
From: ITI SCOTLAND LIMITED
To: METAFORIC LIMITED
Reel/Frame 036757/0028 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 26, 2009
From: STEWART, NEIL; HARKNESS, GRAEME
To: ITI SCOTLAND LIMITED
Reel/Frame 022883/0994 →