IP Library Granted Patent US 8,185,749
Granted Patent B2
US 8,185,749 · App. 12/203,036 · Granted May 22, 2012

System and method for revising boolean and arithmetic operations

Assignee: Apple Inc.
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,185,749
App. No.
12/203,036
Granted
May 22, 2012
Kind
B2
Abstract

Disclosed herein are systems, methods, computer readable media and special purpose processors for obfuscating code. The method includes extracting an operation within program code, selecting a formula to perform the equivalent computation as the extracted operation, and replacing the extracted operation with the selected formula. The formula can be selected randomly or deterministically. The extracted operation can be an arithmetic operation or a Boolean operation.

Claims (26)

1. A method of obfuscating code, the method comprising:

extracting, via a processor, a plurality of operations within program code, to yield a plurality of extracted operations;

selecting a respective set of formulas to perform an equivalent computation as each of the plurality of extracted operations, wherein each respective set of formulas is selected from a table of alternate operations that are more complex than a corresponding one of the plurality of extracted operations; and

before the program code is compiled, obfuscating the program code to make certain portions of the program code more resistant to reverse engineering attempts by replacing at least one of the plurality of extracted operations with the respective set of formulas in the program code until a threshold level of complexity is achieved.

2. The method of claim 1 , wherein the respective set of formulas is selected randomly.

3. The method of claim 1 , wherein the respective set of formulas is selected deterministically.

4. The method of claim 1 , wherein the plurality of extracted operations comprises arithmetic operations.

5. The method of claim 1 , wherein the plurality of extracted operations comprises Boolean operations.

6. A system for obfuscating code, the system comprising:

a processor; and

a memory storing instructions for controlling the processor to perform steps comprising:

extracting a plurality of operations within program code to yield a plurality of extracted operations;

selecting a respective set of formulas to perform an equivalent computation as each of the plurality of extracted operations, wherein each respective set of operations is selected from a table of alternate operations that are more complex than a corresponding one of the plurality of extracted operations; and

before the program code is compiled, obfuscating the program code to make certain portions of the program code more resistant to reverse engineering attempts by replacing at least one of the plurality of extracted operations with the respective set of formulas in the program code until a threshold level of complexity is achieved.

7. The system of claim 6 , wherein the respective set of formulas is selected randomly.

8. The system of claim 6 , wherein the respective set of formulas is selected deterministically.

9. The system of claim 6 , wherein the plurality of extracted operations comprises arithmetic operations.

10. The system of claim 6 , wherein the plurality of extracted operations comprises Boolean operations.

11. A non-transitory computer-readable storage medium storing instructions which, when executed by a computing device, cause the computing device to perform steps comprising:

extracting a plurality of operations within program code to yield a plurality of extracted operations;

selecting a respective set of formulas to perform an equivalent computation as each of the plurality of extracted operations, wherein each respective set of formulas is selected from a table of alternate operations that are more complex than a corresponding one of the plurality of extracted operations; and

before the program code is compiled, obfuscating the program code to make certain portions of the program code more resistant to reverse engineering attempts by replacing at least one of the plurality of extracted operations with the respective set of formulas in the program code until a threshold level of complexity is achieved.

12. The non-transitory computer-readable storage medium of claim 11 , wherein the respective set of formulas is selected randomly.

13. The non-transitory computer-readable storage medium of claim 11 , wherein the respective set of formulas is selected deterministically.

14. The non-transitory computer-readable storage medium of claim 11 , wherein the plurality of extracted operations comprises arithmetic operations.

15. The non-transitory computer-readable storage medium of claim 11 , wherein the plurality of extracted operations comprises Boolean operations.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 2, 2008
From: CIET, MATHIEU; FARRUGIA, AUGUSTIN J.; PAUN, FILIP TOMA; RIENDEAU, JEAN-FRANCOIS
To: APPLE INC.
Reel/Frame 021470/0811 →
Continuity (1)
Related Publication 20100058477A1 · Mar 4, 2010