IP Library Granted Patent US 12670238
Granted Patent B1
US 12670238 · App. 19/406,523 · Granted Jun 30, 2026

Tamper-resistant code obfuscation with control flow breaking

Inventors: Antonio Nappa (Madrid, ES); Grant Stewart Goodes (Manotick, CA); Javier Lopez Gomez (Madrid, ES)
Assignee: Zimperium, Inc.
G06F21/14G06F9/5005G06F9/5077G06F9/3836G06F2009/45562
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 12670238
App. No.
19/406,523
Granted
Jun 30, 2026
Kind
B1
Abstract

A system and a method are disclosed for providing a code obfuscation solution. The system accesses a computer program comprising a set of instructions and a sequence in which the set of instructions are to be performed. The system determines a plurality of computing resources available to perform the set of instructions and assigns the set of instructions to be distributed among the computing resources for execution. A single one of the plurality of computing resources is computationally capable of performing an entirety of the set of instructions. The system modifies the set of instructions with at least one obfuscating instruction that instructs at runtime for the computer program to jump from one computing resource to another computing resource of the set of computing resources. The system transmits the set of modified instruction to a target device for executing the computer program.

Claims (41)

1 . A method comprising:

accessing a computer program comprising a set of instructions and a sequence in which the set of instructions are to be performed;

determining a plurality of computing resources available to perform the set of instructions, wherein a single one of the plurality of computing resources is computationally capable of performing an entirety of the set of instructions;

assigning the set of instructions to be distributed among the plurality of computing resources for execution;

modifying the set of instructions with at least one obfuscating instruction to generate an obfuscated computer program, the at least one obfuscating instruction instructing at runtime for the computer program to jump from one computing resource to another computing resource of the set of computing resources;

transmitting the obfuscated computer program to a target device, wherein the target device is configured to execute the obfuscated computer program and achieve a same output as the computer program would output without obfuscation;

creating a virtual machine (VM) to be deployed at the target device; and

causing the target device to deploy the VM to interpret the obfuscated computer program when the obfuscated computer program is executed, wherein the VM translates the obfuscated computer program to an instruction vector which specifies the assignment of the instructions to the computing resources.

2 . The method of claim 1 , wherein modifying the set of instructions with at least one obfuscating instruction comprises:

adding an artificial control flow to the sequence of the set of instructions.

3 . The method of claim 1 , wherein modifying the set of instructions with at least one obfuscating instruction comprises:

modifying an existing control flow within the sequence of the set of instructions.

4 . The method of claim 1 , wherein the instruction vector uses SIMD (Single Instruction, Multiple Data) instructions to trigger special behavior on the VM.

5 . The method of claim 1 , wherein the plurality of computing resources are simulated by a virtual machine (VM) in a VM environment.

6 . A non-transitory computer readable medium configured to store instructions, the instructions when executed by one or more processors causing the one or more processors to perform operations comprising:

accessing a computer program comprising a set of instructions and a sequence in which the set of instructions are to be performed;

determining a plurality of computing resources available to perform the set of instructions, wherein a single one of the plurality of computing resources is computationally capable of performing an entirety of the set of instructions;

assigning the set of instructions to be distributed among the plurality of computing resources for execution;

modifying the set of instructions with at least one obfuscating instruction to generate an obfuscated computer program, the at least one obfuscating instruction instructing at runtime for the computer program to jump from one computing resource to another computing resource of the set of computing resources;

transmitting the obfuscated computer program to a target device, wherein the target device is configured to execute the obfuscated computer program and achieve a same output as the computer program would output without obfuscation;

creating a virtual machine (VM) to be deployed at the target device; and

causing the target device to deploy the VM to interpret the obfuscated computer program when the obfuscated computer program is executed, wherein the VM translates the obfuscated computer program to an instruction vector which specifies the assignment of the instructions to the computing resources.

7 . The non-transitory computer readable medium of claim 6 , wherein modifying the set of instructions with at least one obfuscating instruction comprises:

adding an artificial control flow to the sequence of the set of instructions.

8 . The non-transitory computer readable medium of claim 6 , wherein modifying the set of instructions with at least one obfuscating instruction comprises:

modifying an existing control flow within the sequence of the set of instructions.

9 . The non-transitory computer readable medium of claim 6 , wherein the instruction vector uses SIMD (Single Instruction Multiple Data) instructions to trigger special behavior on the VM.

10 . The non-transitory computer readable medium of claim 6 , wherein the plurality of computing resources are simulated by a virtual machine (VM) in a VM environment.

11 . A system comprising memory with instructions encoded thereon that, when executed by one or more processors, cause the one or more processors to perform operations comprising:

accessing a computer program comprising a set of instructions and a sequence in which the set of instructions are to be performed;

determining a plurality of computing resources available to perform the set of instructions, wherein a single one of the plurality of computing resources is computationally capable of performing an entirety of the set of instructions;

assigning the set of instructions to be distributed among the plurality of computing resources for execution;

modifying the set of instructions with at least one obfuscating instruction to generate an obfuscated computer program, the at least one obfuscating instruction instructing at runtime for the computer program to jump from one computing resource to another computing resource of the set of computing resources;

transmitting the obfuscated computer program to a target device, wherein the target device is configured to execute the obfuscated computer program and achieve a same output as the computer program would output without obfuscation;

creating a virtual machine (VM) to be deployed at the target device; and

causing the target device to deploy the VM to interpret the obfuscated computer program when the obfuscated computer program is executed, wherein the VM translates the obfuscated computer program to an instruction vector which specifies the assignment of the instructions to the computing resources.

12 . The system of claim 11 , wherein modifying the set of instructions with at least one obfuscating instruction comprises:

adding an artificial control flow to the sequence of the set of instructions.

13 . The system of claim 11 , wherein modifying the set of instructions with at least one obfuscating instruction comprises:

modifying an existing control flow within the sequence of the set of instructions.

14 . The system of claim 11 , wherein the instruction vector uses SIMD (Single Instruction Multiple Data) instructions to trigger special behavior on the VM.