The patent badge is an abbreviated version of the USPTO patent document. The patent badge does contain a link to the full patent document.
The patent badge is an abbreviated version of the USPTO patent document. The patent badge covers the following: Patent number, Date patent was issued, Date patent was filed, Title of the patent, Applicant, Inventor, Assignee, Attorney firm, Primary examiner, Assistant examiner, CPCs, and Abstract. The patent badge does contain a link to the full patent document (in Adobe Acrobat format, aka pdf). To download or print any patent click here.
Patent No.:
Date of Patent:
Jun. 10, 2014
Filed:
Aug. 01, 2011
Gideon M. Myles, San Jose, CA (US);
Julien Lerouge, Santa Clara, CA (US);
Jon Mclachlan, San Francisco, CA (US);
Ganna Zaks, Mountain View, CA (US);
Augustin J. Farrugia, Cupertino, CA (US);
Gideon M. Myles, San Jose, CA (US);
Julien Lerouge, Santa Clara, CA (US);
Jon McLachlan, San Francisco, CA (US);
Ganna Zaks, Mountain View, CA (US);
Augustin J. Farrugia, Cupertino, CA (US);
Apple Inc., Cupertino, CA (US);
Abstract
Disclosed herein are systems, methods, and non-transitory computer-readable storage media for obfuscating branches in computer code. A compiler or a post-compilation tool can obfuscate branches by receiving source code, and compiling the source code to yield computer-executable code. The compiler identifies branches in the computer-executable code, and determines a return address and a destination value for each branch. Then, based on the return address and the destination value for each branch, the compiler constructs a binary tree with nodes and leaf nodes, each node storing a balanced value, and each leaf node storing a destination value. The non-leaf nodes are arranged such that searching the binary tree by return address leads to a corresponding destination value. Then the compiler inserts the binary tree in the computer-executable code and replaces each branch with instructions in the computer-executable code for performing a branching operation based on the binary tree.