Patents by Inventor Daniel F. Reynaud
Daniel F. Reynaud has filed for patents to protect the following inventions. This listing includes patent applications that are pending as well as patents that have already been granted by the United States Patent and Trademark Office (USPTO).
-
Patent number: 9721120Abstract: An obfuscated program can be configured to resist attacks in which an attacker directly calls a non-entry function by verifying that an execution path to the function is an authorized execution path. To detect an unauthorized execution order, a secret value is embedded in each function along an authorized execution path. At runtime, the secrets are combined to generate a runtime representation of the execution path, and the runtime representation is verified against an expected value. To perform the verification, a verification polynomial is evaluated using the runtime representation as input. A verification value result of zero means the execution path is an authorized execution path.Type: GrantFiled: May 14, 2013Date of Patent: August 1, 2017Assignee: Apple Inc.Inventors: Jon McLachlan, Julien Lerouge, Daniel F. Reynaud, Eric D. Laspe
-
Patent number: 9424049Abstract: Methods, media and systems that use an encoded opaque pointer in an API between a client process and a library process. An encoded opaque pointer, in one embodiment, can be received by the library process from the client process, and the library process can decode the opaque pointer to obtain an address in memory containing a data structure pointed to by the opaque pointer. The library process can operate on the data structure to create a revised or processed data structure, stored in the same or different address in heap memory or stack memory, and the library process can encode and return a new opaque pointer, for the processed data structure, to the client process.Type: GrantFiled: September 14, 2012Date of Patent: August 23, 2016Assignee: Apple Inc.Inventors: Augustin J. Farrugia, Daniel F. Reynaud, Gianpaolo Fasoli, Jonathan Gregory McLachlan, Julien Lerouge
-
Patent number: 9336370Abstract: A method and an apparatus that provide rewriting code to dynamically mask program data statically embedded in a first code are described. The program data can be used in multiple instructions in the first code. A code location (e.g. an optimal code location) in the first code can be determined for injecting the rewriting code. The code location may be included in two or more execution paths of first code. Each execution path can have at least one of the instructions using the program data. A second code may be generated based on the first code inserted with the rewriting code at the optimal code location. The second code can include instructions using the program data dynamically masked by the rewriting code. When executed by a processor, the first code and the second code can generate identical results.Type: GrantFiled: December 6, 2012Date of Patent: May 10, 2016Assignee: Apple Inc.Inventors: Benoit Chevallier-Mames, Daniel F. Reynaud, Jonathan G. McLachlan, Julien Lerouge, Mathieu Ciet, Thomas Icart
-
Patent number: 9268677Abstract: Techniques, methods, systems, and computer-readable media for allocating and managing dynamically obfuscated heap memory allocations are described. In one embodiment a memory manager in a data processing system contains an addressor, to determine a first address of a program object in a first memory address space, and one or more encoders, to abstract memory access to the program object using the first address such that layout of the object data in the first address space differs from the layout of the object in a second address space. In one embodiment, a runtime system modifies object code of an executable file to include encoder routines to abstract memory accesses to data in an obfuscated heap. In one embodiment, a compiler system using an intermediate representation of a high level program generates an intermediate representation of a high level program capable of performing memory writes and memory reads using obfuscation encoder routines.Type: GrantFiled: October 24, 2012Date of Patent: February 23, 2016Assignee: Apple Inc.Inventors: Jonathan G. McLachlan, Julien Lerouge, Daniel F. Reynaud
-
Publication number: 20140344924Abstract: An obfuscated program can be configured to resist attacks in which an attacker directly calls a non-entry function by verifying that an execution path to the function is an authorized execution path. To detect an unauthorized execution order, a secret value is embedded in each function along an authorized execution path. At runtime, the secrets are combined to generate a runtime representation of the execution path, and the runtime representation is verified against an expected value. To perform the verification, a verification polynomial is evaluated using the runtime representation as input. A verification value result of zero means the execution path is an authorized execution path.Type: ApplicationFiled: May 14, 2013Publication date: November 20, 2014Applicant: Apple Inc.Inventors: Jon McLachlan, Julien Lerouge, Daniel F. Reynaud, Eric D. Laspe
-
Patent number: 8756435Abstract: Methods, media and systems that obfuscate control flow in software programs. The obfuscation can impede or prevent static flow analysis of a software program's control flow. In one embodiment, a method, performed by a data processing system, identifies each branch point in a set of branch points in a first version of software and replaces, in each branch point in the set, a representation of a target of the branch point with a computed value that depends upon at least one prior computed value in a stream of instructions in the first version of software. Other embodiments are also described.Type: GrantFiled: October 19, 2012Date of Patent: June 17, 2014Assignee: Apple Inc.Inventors: Julien Lerouge, Jonathan G. McLachlan, Daniel F. Reynaud
-
Publication number: 20140165208Abstract: A method and an apparatus that provide rewriting code to dynamically mask program data statically embedded in a first code are described. The program data can be used in multiple instructions in the first code. A code location (e.g. an optimal code location) in the first code can be determined for injecting the rewriting code. The code location may be included in two or more execution paths of first code. Each execution path can have at least one of the instructions using the program data. A second code may be generated based on the first code inserted with the rewriting code at the optimal code location. The second code can include instructions using the program data dynamically masked by the rewriting code. When executed by a processor, the first code and the second code can generate identical results.Type: ApplicationFiled: December 6, 2012Publication date: June 12, 2014Applicant: APPLE INC.Inventors: Benoit Chevallier-Mames, Daniel F. Reynaud, Jonathan G. McLachlan, Julien Lerouge, Mathieu Ciet, Thomas Icart
-
Publication number: 20140115292Abstract: Techniques, methods, systems, and computer-readable media for allocating and managing dynamically obfuscated heap memory allocations are described. In one embodiment a memory manager in a data processing system contains an addressor, to determine a first address of a program object in a first memory address space, and one or more encoders, to abstract memory access to the program object using the first address such that layout of the object data in the first address space differs from the layout of the object in a second address space. In one embodiment, a runtime system modifies object code of an executable file to include encoder routines to abstract memory accesses to data in an obfuscated heap. In one embodiment, a compiler system using an intermediate representation of a high level program generates an intermediate representation of a high level program capable of performing memory writes and memory reads using obfuscation encoder routines.Type: ApplicationFiled: October 24, 2012Publication date: April 24, 2014Applicant: Apple Inc.Inventors: JONATHAN G. MCLACHLAN, Julien Lerouge, Daniel F. Reynaud
-
Publication number: 20130232507Abstract: Methods, media and systems that use an encoded opaque pointer in an API between a client process and a library process. An encoded opaque pointer, in one embodiment, can be received by the library process from the client process, and the library process can decode the opaque pointer to obtain an address in memory containing a data structure pointed to by the opaque pointer. The library process can operate on the data structure to create a revised or processed data structure, stored in the same or different address in heap memory or stack memory, and the library process can encode and return a new opaque pointer, for the processed data structure, to the client process.Type: ApplicationFiled: September 14, 2012Publication date: September 5, 2013Inventors: Augustin J. Farrugia, Daniel F. Reynaud, Gianpaolo Fasoli, Jonathan Gregory McLachlan, Julien Lerouge
-
Publication number: 20130232323Abstract: Methods, media and systems that obfuscate control flow in software programs. The obfuscation can impede or prevent static flow analysis of a software program's control flow. In one embodiment, a method, performed by a data processing system, identifies each branch point in a set of branch points in a first version of software and replaces, in each branch point in the set, a representation of a target of the branch point with a computed value that depends upon at least one prior computed value in a stream of instructions in the first version of software. Other embodiments are also described.Type: ApplicationFiled: October 19, 2012Publication date: September 5, 2013Applicant: APPLE INCInventors: Julien Lerouge, Jonathan Gregory McLachlan, Daniel F. Reynaud