IP Library Granted Patent US 8,281,290
Granted Patent B2
US 8,281,290 · App. 12/010,925 · Granted Oct 2, 2012

Software diversity using context-free grammar transformations

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,281,290
App. No.
12/010,925
Granted
Oct 2, 2012
Kind
B2
Abstract

A method may include mapping a first program to a context-free grammar. Grammar transformations may be performed on the context-free grammar to produce a transformed context-free grammar representing the first program. A second program having a program structure different than a program structure of the first program may be constructed from the transformed context-free grammar.

Claims (19)

1. A method comprising:

mapping, by a computing platform, a first program to a context-free grammar, the context free grammar being at least a 4-tuple grammar and induced from a control-flow graph;

performing, by the computing platform, grammar transformations on the context-free grammar to produce a transformed context-free grammar representing the first program, the transformed context free grammar being at least a 4-tuple grammar, the transformed context free grammar including separating function parameters and variables; and

constructing, by the computing platform, a second program having a program structure different than a program structure of the first program from the transformed context-free grammar.

2. The method of claim 1 , wherein a set of functions of the second program is different than a set of functions of the first program.

3. The method of claim 2 , wherein a distribution of function parameters, stack variables, and heap variables across the set of functions of the second program is different than a distribution of function parameters, stack variables, and heap variables across the set of functions of the first program.

4. The method of claim 2 , wherein the set of functions of the second program includes one of (i) more functions than the set of functions in the first program, and (ii) less functions than the set of functions in the first program.

5. The method of claim 1 , wherein the context free grammar is at least a 4 tuple=(N, T, S, P), where N is a set of control elements including functions and control structures, T is a set of program statements, S.di-elect cons.N is a main function, and P is a relation from the control elements to strings of the program statements and the control elements, and wherein P includes a plurality of elements specifying execution sequences, and each element in P is of the form A.fwdarw..beta. where A is a control element and P is a string of the program statements and the control elements.

6. The method of claim 5 , wherein the performing grammar transformations on the context-free grammar includes separating at least one of function parameters and variables of the control elements.

7. The method of claim 1 , wherein the context-free grammar is at least an 8-tuple .GAMMA.=(N, T, s, P, F, B, D, .tau.), where N is a set of control elements including functions and control structures, T is a set of program statements, S.di-elect cons.N is a main function, and a P is a relation from the control elements to strings of the program statements and the control elements, and wherein each production in P is of the form A.fwdarw..beta. where A is a control element and .beta. is a possibly empty string of the program statements and the control elements, and wherein F.OR right.N.times.T is a set of function control elements, wherein for (n,o).di-elect cons.F,n is the function's name, and o is the label of the function's initial block, and wherein B is a set of blocks, where for (l,I,n,.rho.,.chi.).di-elect cons.B,l.di-elect cons.T is a block label, I is a set of instructions in the block, n.di-elect cons.N.orgate.{.epsilon.} is at least one of the name of a function called and an empty string, and .rho. and .chi. are a set of parameters and variables respectively accessed in the block, and wherein D is the distribution of the parameters and the variables across the functions, and wherein for (n,R,V).di-elect cons.D,n.di-elect cons.F is the function's name, R is a set function parameters, and V is a set of variables declared in the function, and wherein .tau..OR right.T is a set of program statements which represent the state-changing statement of the first program.

8. The method of claim 7 , wherein the performing grammar transformations on the context-free grammar includes separating at least one of the function parameters and the variables of the at least one of the control elements.

9. The method of claim 1 , wherein a syntax of a language of the first program is the same as a syntax of a language of the second program.

10. The method of claim 1 , wherein a type of grammar transformation performed on the context-free grammar is based on a code structure and variable usage of the first program.

11. The method of claim 10 , wherein the type of grammar transformation performed on the context-free grammar is a transformation of the context-free grammar to a normal form of the context-free grammar.

12. The method of claim 1 , wherein the mapping the first program to the context-free grammar includes generating a control-flow graph based on the first program and the context-free grammar.

13. A non-transitory computer readable medium having computer instruction code embedded thereon, the computer instruction code comprising:

a mapping code segment instructing a computer to map a first program to a context-free grammar, the context free grammar being at least a 4-tuple grammar and induced from a control flow graph;

a performing code segment instructing a computer to perform grammar transformations on the context-free grammar to produce a transformed context-free grammar representing the first program, the transformed context free grammar being at least a 4-tuple grammar, the transformed context free grammar including separating function parameters and variables; and

a constructing code segment instructing a computer to construct a second program having a program structure different than a program structure of the first program from the transformed context-free grammar.

Assignments (10)
NOTICE OF GRANT OF SECURITY INTEREST IN PATENTS Recorded Jan 22, 2025
From: CACI LGS INNOVATIONS LLC
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 069987/0444 →
CHANGE OF NAME Recorded Nov 4, 2024
From: LGS INNOVATIONS LLC
To: CACI LGS INNOVATIONS LLC
Reel/Frame 069292/0952 →
NOTICE OF GRANT OF SECURITY INTEREST IN PATENTS Recorded May 29, 2019
From: LGS INNOVATIONS LLC
To: BANK OF AMERICA, N.A., AS ADMINISTRATIVE AGENT
Reel/Frame 049312/0843 →
RELEASE OF SECURITY INTEREST Recorded May 21, 2019
From: BANK OF AMERICA, N.A.
To: LGS INNOVATIONS LLC
Reel/Frame 049247/0557 →
RELEASE OF SECURITY INTEREST Recorded May 2, 2019
From: BANK OF AMERICA, N.A.
To: LGS INNOVATIONS LLC
Reel/Frame 049074/0094 →
NOTICE OF GRANT OF SECURITY INTEREST IN PATENTS Recorded Jul 19, 2017
From: LGS INNOVATIONS LLC
To: BANK OF AMERICA, N.A.
Reel/Frame 043254/0393 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 23, 2014
From: ALCATEL LUCENT
To: LGS INNOVATIONS LLC
Reel/Frame 032743/0584 →
SECURITY INTEREST Recorded Apr 1, 2014
From: LGS INNOVATIONS LLC
To: BANK OF AMERICA NA
Reel/Frame 032579/0066 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 18, 2012
From: ALCATEL-LUCENT USA INC.
To: ALCATEL LUCENT
Reel/Frame 028573/0432 →
MERGER Recorded Jul 16, 2012
From: LUCENT TECHNOLOGIES INC.
To: ALCATEL-LUCENT USA INC.
Reel/Frame 028557/0020 →