Method of marking a program for identification/authentication
OwnerGregory Michael Perkinsinventor
Life of this patent
Estimating the term…
Abstract
The disclosure is directed to a method of marking for authentication a computer program with a bit-string pattern. The method includes generating a bit-string pattern, each bit in the bit-string pattern having a binary value and at least one bit having a first value. The computer program is searched for at least one polymorphic statement. The one bit having the first value is associated with the polymorphic statement found by the search. The polymorphic statement is then altered, thereby marking the computer program.
Claims16
A method of marking for authentication a computer program with a bit-string pattern, the method comprising the steps of:
- a) generating a bit-string pattern, each bit in the bit-string pattern having a binary value and at least one bit having a first value;
- b) searching for at least one polymorphic statement in the computer program;
- c) associating the one bit having the first value with the polymorphic statement found in step (b);
- and
- d) altering the polymorphic statement;
- wherein altering the polymorphic statement marks the computer program.
A method of marking, for authentication, source code of a computer program, designated as P, and having a complied version of the computer program, designated as E, the method comprising the steps of:
- a) generating a binary bit-string pattern, designated as B, having a predetermined value;
- b) modifying P to produce a separate program P1, such that the separate program P1, when compiled, functions identically to P;
- wherein modifying P includes one of the following steps:
- i) modifying inline assembly code of P based on B;
- and
- ii) manipulating binary executable code of E based on B.
A method of marking for authentication a computer program with a bit-string pattern, the bit-string pattern including a plurality of values, the method comprising the steps of:
- a) associating the plurality of values with a respective plurality of predetermined computer statements, in which each predetermined computer statement is expressible as first and second equivalent operations;
- b) selecting a first non-processed value of the bit-string pattern;
- c) searching the computer program for at least one predetermined computer statement corresponding to the first non-processed value of the bit-string pattern;
- d) expressing the predetermined computer statement found in step (c) as one of the first and second equivalent operations;
- e) marking the first non-processed value of the bit-string pattern as processed;
- and
- f) repeating steps (b) through (e) for each non-processed value of the bit-string pattern.
A method of authenticating a second computer program against a first computer program, the method comprising the steps of:
- a) accessing a bit-string pattern, each bit in the bit-string pattern having a binary value and at least one bit having a first value;
- b) searching for at least one polymorphic statement in the second computer program;
- c) associating the one bit having the first value with the polymorphic statement found in step (b);
- d) altering the polymorphic statement in the second computer program;
- e) comparing the polymorphic statement in the second computer program, after altering the polymorphic statement in step (d), against a corresponding polymorphic statement in the first computer program;
- and
- f) determining that the second computer program is a modified version of the first computer program, if the polymorphic statements compared in step (e) are not similar.
A method of authenticating a second computer program against a first computer program, the method comprising the steps of:
- a) accessing a first bit-string pattern, each bit in the first bit-string pattern having a binary value associated with a corresponding polymorphic statement in the first computer program;
- b) searching for at least one polymorphic statement in the second computer program;
- c) assigning a bit having a binary value to the polymorphic statement found in step (b);
- d) assigning another bit having a binary value to another polymorphic statement found in step (b);
- e) generating a second bit-string pattern including the bits assigned in steps (c) and (d);
- and
- f) determining that the second computer program is a modified version of the first computer program, if the second bit-string pattern does not match the first bit-string pattern.
Dependencies are inferred from the claim text.