Patents by Inventor Julien Lerouge

Julien Lerouge 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: 8412953
    Abstract: Disclosed herein are methods, systems, and computer-readable storage media for annotation driven integrity program verification. The method includes distributing verification calls configured to verify a function across call paths leading to the function in source code, generating a binary from the source code having placeholders associated with the verification calls, and filling each placeholder in the binary with verification data or reference checksums. Alternatively, the method includes receiving source code having a verification call, replacing the verification call with one or more equivalent verification calls distributed over a call path, replacing each verification call with a checksum function generating placeholders while compiling, generating a binary based on the placeholders, and filling each placeholder in the binary with reference checksums. The system includes a processor and a module controlling the processor to perform the methods.
    Type: Grant
    Filed: August 28, 2009
    Date of Patent: April 2, 2013
    Assignee: Apple Inc
    Inventors: Julien Lerouge, Ginger M. Myles, Tanya Michelle Lattner, Augustin J. Farrugia
  • Publication number: 20130036473
    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.
    Type: Application
    Filed: August 1, 2011
    Publication date: February 7, 2013
    Applicant: Apple Inc.
    Inventors: Gideon M. Myles, Julien Lerouge, Jon McLachlan, Ganna Zaks, Augustin J. Farrugia
  • Publication number: 20120284688
    Abstract: Disclosed herein are systems, methods, and non-transitory computer-readable storage media for obfuscating a computer program. A system configured to practice the method identifies a set of executable instructions at a first location in an instruction section of the computer program and identifies a second location in a data section of the computer program. Then the system moves the set of executable instructions to the second location and patches references in the computer program to the set of executable instructions to point to the second location. The instruction section of the computer program can be labeled as _TEXT,_text and the data section of the computer program is labeled as _DATA,_data. The set of executable instructions can include one or more non-branching instructions optionally followed by a branching instruction. The placement of the first and second locations can be based on features of a target computing architecture, such as cache size.
    Type: Application
    Filed: May 3, 2011
    Publication date: November 8, 2012
    Applicant: Apple Inc.
    Inventors: Jon McLachlan, Ganna Zaks, Julien Lerouge, Pierre Betouin, Augustin J. Farrugia, Gideon M. Myles, Cédric Tessier
  • Publication number: 20120281828
    Abstract: Method and apparatus to prevent hacking of encrypted audio or video content during playback. Hackers, using a debugging attachment or other tools, can illicitly access encrypted data in memory in a playback device when the data is decrypted during playback and momentarily stored in digital form. This hacking is defeated here by methodically “poisoning” the encrypted data so that it is no longer playable by a standard decoder. The poisoning involves deliberate alteration of certain bit values. On playback, the player invokes a special secure routine that provides correction of the poisoned bit values, for successful playback.
    Type: Application
    Filed: July 20, 2012
    Publication date: November 8, 2012
    Applicant: Apple Inc.
    Inventors: Julien LEROUGE, Gianpaolo Fasoli, Augustin J. Farrugia
  • Patent number: 8302210
    Abstract: Disclosed herein are systems, computer-implemented methods, and computer-readable storage media for call path enforcement. The method includes tracking, during run-time, a run-time call order for a series of function calls in a software program, and when executing a protected function call during run-time, allowing or causing proper execution of a protected function call only if the run-time call order matches a predetermined order. The predetermined order can be an expected run-time call order based on a programmed order of function calls in the software program. The method can include maintaining an evolving value associated with the run-time call order and calling the protected function by passing the evolving value and function parameters corrupted based on the evolving value. The protected function uncorrupts the corrupted parameters based on the passed evolving value and an expected predetermined call order. A buffer containing the uncorrupted parameters can replace the corrupted parameters.
    Type: Grant
    Filed: August 24, 2009
    Date of Patent: October 30, 2012
    Assignee: Apple Inc.
    Inventors: Ginger M. Myles, Srinivas Vedula, Gianpaolo Fasoli, Julien Lerouge, Tanya Michelle Lattner, Augustin J. Farrugia
  • Publication number: 20120260106
    Abstract: Disclosed herein are systems, methods, and non-transitory computer-readable storage media for binary layout randomization. A system performs binary layout randomization by loading computer code into memory and identifying a section of the computer code to randomize. A loader remaps the section of computer code to a different location in memory utilizing a remapping algorithm. The loader can shuffle sections of code in place or move sections of code elsewhere. The loader patches relative addresses to point to the updated locations in memory. After the system patches the addresses, the system executes the computer code from memory. In one embodiment, the system encrypts the computer code prior to loading the computer code into memory. The loader decrypts the encrypted computer code prior to remapping the section of computer code to a different location in memory. Optionally, the loader can decrypt the encrypted computer code after patching relative addresses.
    Type: Application
    Filed: April 7, 2011
    Publication date: October 11, 2012
    Applicant: Apple Inc.
    Inventors: Ganna Zaks, Julien Lerouge, Jon McLachlan, Gideon M. Myles, Augustin J. Farrugia
  • Publication number: 20120260102
    Abstract: Disclosed herein are systems, methods, and non-transitory computer-readable storage media for executing encrypted computer code. A system configured to practice the method receives a request to execute encrypted computer code. In response to the request, the system identifies a portion of the encrypted computer code for execution and decrypts the portion to yield decrypted computer code. Then the system stores the decrypted computer code in a pool of memory and executes the decrypted computer code from the pool of memory. The system can store the decrypted computer code in the pool of memory based on a randomization algorithm so that identical executions of the encrypted computer code result in selections of different available memory locations within the pool of memory. Related portions can be stored non-consecutively in the pool of memory. The pool of memory can store different portions of decrypted computer code over time.
    Type: Application
    Filed: April 8, 2011
    Publication date: October 11, 2012
    Applicant: Apple Inc.
    Inventors: Ganna Zaks, Pierre Betouin, Augustin J. Farrugia, Julien Lerouge, Jon McLachlan, Gideon M. Myles, Cédric Tessier
  • Publication number: 20120221864
    Abstract: In the field of computer software, obfuscation techniques for enhancing software security are applied to compiled (object) software code. The obfuscation results here in different versions (instances) of the obfuscated code being provided to different installations (recipient computing devices). The complementary code execution uses a boot loader or boot installer-type program at each installation which contains the requisite logic. Typically, the obfuscation results in a different instance of the obfuscated code for each intended installation (recipient) but each instance being semantically equivalent to the others. This is accomplished in one version by generating a random value or other parameter during the obfuscation process, and using the value to select a particular version of the obfuscating process, and then communicating the value along with boot loader or installer program software.
    Type: Application
    Filed: March 29, 2012
    Publication date: August 30, 2012
    Applicant: Apple Inc.
    Inventors: Mathieu CIET, Julien LEROUGE, Augustin J. FARRUGIA
  • Patent number: 8256005
    Abstract: Method and apparatus to prevent hacking of encrypted audio or video content during playback. Hackers, using a debugging attachment or other tools, can illicitly access encrypted data in memory in a playback device when the data is decrypted during playback and momentarily stored in digital form. This hacking is defeated here by methodically “poisoning” the encrypted data so that it is no longer playable by a standard decoder. The poisoning involves deliberate alteration of certain bit values. On playback, the player invokes a special secure routine that provides correction of the poisoned bit values, for successful playback.
    Type: Grant
    Filed: January 8, 2007
    Date of Patent: August 28, 2012
    Assignee: Apple Inc.
    Inventors: Julien Lerouge, Gianpaolo Fasoli, Augustin J. Farrugia
  • Publication number: 20120179898
    Abstract: This disclosure is directed to measuring hardware-based statistics, such as the number of instructions executed in a specific section of a program during execution, for enforcing software security. The counting can be accomplished through a specific set of instructions, which can either be implemented in hardware or included in the instruction set of a virtual machine. For example, the set of instructions can include atomic instructions of reset, start, stop, get instruction count, and get CPU cycle count. To obtain information on a specific section of code, a software developer can insert start and stop instructions around the desired code section. For each instruction in the identified code block, when the instruction is executed, a counter is incremented. The counter can be stored in a dedicated register. The gathered statistics can be used for a variety of purposes, such as detecting unauthorized code modifications or measuring code performance.
    Type: Application
    Filed: January 10, 2011
    Publication date: July 12, 2012
    Applicant: Apple Inc.
    Inventors: Pierre Betouin, Jon McLachlan, Gianpaolo Fasoli, Julien Lerouge, Ganna Zaks, Augustin J. Farrugia
  • Patent number: 8176337
    Abstract: In the field of computer software, obfuscation techniques for enhancing software security are applied to compiled (object) software code. The obfuscation results here in different versions (instances) of the obfuscated code being provided to different installations (recipient computing devices). The complementary code execution uses a boot loader or boot installer-type program at each installation which contains the requisite logic. Typically, the obfuscation results in a different instance of the obfuscated code for each intended installation (recipient) but each instance being semantically equivalent to the others. This is accomplished in one version by generating a random value or other parameter during the obfuscation process, and using the value to select a particular version of the obfuscating process, and then communicating the value along with boot loader or installer program software.
    Type: Grant
    Filed: March 12, 2008
    Date of Patent: May 8, 2012
    Assignee: Apple Inc.
    Inventors: Mathieu Ciet, Julien Lerouge, Augustin J. Farrugia
  • Publication number: 20110307873
    Abstract: Disclosed are systems, methods, and non-transitory computer-readable storage media for detecting changes in a source of entropy. A system configured to practice the method generates a cyclic graph based at least in part on the values in the entropy pool. Using the cyclic graph and one or more starting points, the system establishes one or more baseline properties for the cyclic graph. These properties can include the number of steps required to identify a cycle in the graph or the number of steps required to traverse the graph from one or more starting points to a selected end point. The computed properties are then stored for later use. As execution progresses, the system monitors the entropy pool to detect a change by regenerating the cyclic graph and using the stored properties.
    Type: Application
    Filed: June 14, 2010
    Publication date: December 15, 2011
    Applicant: Apple Inc.
    Inventors: Jon McLachlan, Julien Lerouge, Nicholas T. Sullivan, Ganna Zaks, Augustin J. Farrugia
  • Publication number: 20110179403
    Abstract: Disclosed herein are systems, methods, and computer-readable storage media for obfuscating using inlined functions. A system configured to practice the method receives a program listing including annotated functions for obfuscation, identifies an annotated function called more than once in the program listing, and creates an inline control flow structure in the program listing for the identified annotated function, the control flow structure being computationally equivalent to inlining the identified annotated function into the program listing for each occurrence of the identified annotated function. The program listing can include tiers of annotated functions. The system can identify annotated functions called more than once based on an optionally generated callgraph. The system can create inline control flow structures in the program listing in order of annotation importance. The system can identify how many times each annotated function is called in the program listing.
    Type: Application
    Filed: January 15, 2010
    Publication date: July 21, 2011
    Applicant: Apple Inc.
    Inventors: Julien Lerouge, Nicholas T. Sullivan, Ginger M. Myles, Jon McLachlan, Augustin J. Farrugia
  • Publication number: 20110167407
    Abstract: Disclosed herein are systems, methods, and computer-readable storage media for obfuscating software data references. The obfuscation process locates pointers to data within source code and loads the pointers into an ordered set of pools. The process further shuffles the pointers in the ordered set of pools and adds a function within the source code that when executed uses the ordered set of pools to retrieve the data. The obfuscation process utilizes pool entry shuffling, pool chaining shuffling and cross-pointer shuffling.
    Type: Application
    Filed: January 6, 2010
    Publication date: July 7, 2011
    Applicant: Apple Inc.
    Inventors: Pierre Betouin, Mathieu Ciet, Augustin J. Farrugia, Julien Lerouge, Ginger M. Myles
  • Publication number: 20110167414
    Abstract: Disclosed herein are systems, methods, and computer-readable storage media for obfuscating by a common function. A system configured to practice the method identifies a set of functions in source code, generates a transformed set of functions by transforming each function of the set of functions to accept a uniform set of arguments and return a uniform type, and merges the transformed set of functions into a single recursive function. The single recursive function can allocate memory in the heap. The stack can contain a pointer to the allocated memory in the heap. The single recursive function can include instructions for creating and explicitly managing a virtual stack in the heap. The virtual stack can emulate what would happen to the real stack if one of the set of functions was called. The system can further compile the source code including the single recursive function.
    Type: Application
    Filed: January 4, 2010
    Publication date: July 7, 2011
    Applicant: Apple Inc.
    Inventors: Christopher Arthur Lattner, Tanya Michelle Lattner, Julien Lerouge, Ginger M. Myles, Augustin J. Farrugia, Pierre Betouin
  • Publication number: 20110055638
    Abstract: Disclosed herein are methods, systems, and computer-readable storage media for annotation driven integrity program verification. The method includes distributing verification calls configured to verify a function across call paths leading to the function in source code, generating a binary from the source code having placeholders associated with the verification calls, and filling each placeholder in the binary with verification data or reference checksums. Alternatively, the method includes receiving source code having a verification call, replacing the verification call with one or more equivalent verification calls distributed over a call path, replacing each verification call with a checksum function generating placeholders while compiling, generating a binary based on the placeholders, and filling each placeholder in the binary with reference checksums. The system includes a processor and a module controlling the processor to perform the methods.
    Type: Application
    Filed: August 28, 2009
    Publication date: March 3, 2011
    Applicant: Apple Inc.
    Inventors: Julien Lerouge, Ginger M. Myles, Tanya Michelle Lattner, Augustin J. Farrugia
  • Publication number: 20110047622
    Abstract: Disclosed herein are systems, computer-implemented methods, and computer-readable storage media for call path enforcement. The method includes tracking, during run-time, a run-time call order for a series of function calls in a software program, and when executing a protected function call during run-time, allowing or causing proper execution of a protected function call only if the run-time call order matches a predetermined order. The predetermined order can be an expected run-time call order based on a programmed order of function calls in the software program. The method can include maintaining an evolving value associated with the run-time call order and calling the protected function by passing the evolving value and function parameters corrupted based on the evolving value. The protected function uncorrupts the corrupted parameters based on the passed evolving value and an expected predetermined call order. A buffer containing the uncorrupted parameters can replace the corrupted parameters.
    Type: Application
    Filed: August 24, 2009
    Publication date: February 24, 2011
    Applicant: Apple Inc.
    Inventors: Ginger M. Myles, Srinivas Vedula, Gianpaolo Fasoli, Julien Lerouge, Tanya Michelle Lattner, Augustin J. Farrugia
  • Publication number: 20110041183
    Abstract: Disclosed herein are systems, computer-implemented methods, and computer-readable storage media for obfuscating a function call. The method receives a computer program having an annotated function and determines prolog instructions for setting up a stack frame of the annotated function and epilog instructions for tearing down the stack frame. The method places a first portion of the prolog instructions in the computer program preceding a jump to the annotated function and a second portion of the prolog instructions at a beginning of the annotated function. The method places a first portion of the epilog instructions at an end of the annotated function and a second portion of the epilog instructions in the computer program after the jump. Executing the first and second portions of the prolog instructions together sets up the stack frame. Executing the first and the second portions of the epilog instructions together tears down the stack frame.
    Type: Application
    Filed: August 12, 2009
    Publication date: February 17, 2011
    Applicant: Apple Inc.
    Inventors: Ginger M. Myles, Julien Lerouge, Tanya Michelle Lattner, Augustin J. Farrugia
  • Patent number: 7841010
    Abstract: An integrity verification process and associated apparatus to detect tampering or other alterations to computer code (software) or other computer files, and especially useful to detect tampering with code by hackers who might try to plant their own malicious code in the software. To make the verification process more robust versus hackers, each e.g., object code file to be protected is first selected using some sort of rule, then partitioned into variable length blocks or portions, the lengths varying in an unpredictable manner. Each portion has its checksum or hash value computed. An accompanying verification file is created which includes a vector for each portion including the portion's start address in memory, length, and the computed checksum or hash value.
    Type: Grant
    Filed: January 8, 2007
    Date of Patent: November 23, 2010
    Assignee: Apple Inc.
    Inventors: Julien Lerouge, Pierre Betouin, Gianpaolo Fasoli, Augustin J. Farrugia
  • Publication number: 20100058303
    Abstract: Disclosed herein are systems, methods, and computer readable-media for obfuscating code through conditional expansion obfuscation. The method includes identifying a conditional expression in a computer program, identifying a sequence of conditional expressions that is semantically equivalent to the conditional expression, and replacing the conditional expression with the semantically equivalent sequence of conditional expressions. One option replaces each like conditional expression in the computer program with a diverse set of sequences of semantically equivalent conditional expressions. A second option rearranges computer instructions that are to be processed after the sequence of conditional expression is evaluated so that a portion of the instructions is performed before the entire sequence of conditional expressions is evaluated. A third option performs conditional expansion obfuscation of a conditional statement in combination with branch extraction obfuscation.
    Type: Application
    Filed: September 2, 2008
    Publication date: March 4, 2010
    Applicant: Apple Inc.
    Inventors: Ginger M. Myles, Tanya Michelle Lattner, Julien Lerouge, Augustin J. Farrugia