System and method for obfuscation by common function and common function prototype
First Claim
1. A computer-implemented method of obfuscating by a common function, the method causing a computing device to perform steps comprising:
- identifying a set of functions in source code;
generating 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;
merging the transformed set of functions into a single recursive function;
eliminating references to a stack; and
translating recursive function calls to push a virtual stack.
1 Assignment
0 Petitions
Accused Products
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.
30 Citations
17 Claims
-
1. A computer-implemented method of obfuscating by a common function, the method causing a computing device to perform steps comprising:
-
identifying a set of functions in source code; generating 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; merging the transformed set of functions into a single recursive function; eliminating references to a stack; and translating recursive function calls to push a virtual stack. - View Dependent Claims (2, 3, 4, 5, 6)
-
-
7. A system for converting source code having a set of functions, the system comprising:
-
a processor; a module controlling the processor to identify a set of functions in source code; a module controlling the processor to generate 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; a module controlling the processor to merge the transformed set of functions into a single large function; and a module controlling the processor to replace calls to each of the identified set of functions with a corresponding call to the single large function, wherein one argument in the uniform set of arguments indicates a function within the set of functions to be executed. - View Dependent Claims (8, 9)
-
-
10. A system for converting source code having a set of functions, the system comprising:
-
a processor; a module controlling the processor to identify a set of functions in source code; a module controlling the processor to generate 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; a module controlling the processor to merge the transformed set of functions into a single large function; a module controlling the processor to replace calls to each of the identified set of functions with a corresponding call to the single large function; and a module controlling the processor to replace function calls in the source code with a jump instruction to a specific location within the single large function.
-
-
11. A computer-readable storage medium storing instructions which, when executed by a computing device, cause the computing device to execute certain steps, the instructions recursively accessing a common function created by steps comprising:
-
identifying a set of functions in source code; transforming each function of the set of functions to have a uniform set of arguments and a uniform return value; and merging the set of functions into a common function, wherein the instructions contain multiple embedded common functions. - View Dependent Claims (12, 13)
-
-
14. A system for obfuscating source code by a common function, the system comprising:
-
a processor; a module that controls the processor to identify a set of functions in source code; a module that controls the processor to generate 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; a module that controls the processor to merge the transformed set of functions into a single large function; and a module that controls the processor to replace function calls in the source code with a jump instruction to a specific location within the single large function. - View Dependent Claims (15, 16, 17)
-
Specification