Compile based obfuscation
First Claim
1. A method implemented by a computing device to obfuscate source code as part of compilation of source code by a compiler comprising:
- obtaining an obfuscation description file having directives that specify modifications supported by the compiler to make as part of compilation of the source code to obfuscate one or more portions of the source code, the modifications supported by the compiler including at least one of;
rearranging of code blocks or modules, call redirection, creation of a clone function, applying obfuscation algorithms, changes to symbol attributes and behaviors, segmenting of code blocks, replacing calls, setting absolute references between different portions of the code, addition of jump instructions, encryption of code portions, or modification of entry points into the code;
generating obfuscation source code having instructions derived from the obfuscation description file to implement the directives as part of compilation;
combining the obfuscation source code and source code into a combined code file; and
compiling the combined code file to produce protected compiled code, the compiling including producing the modifications by applying the obfuscation source code included in the combined code file to obfuscate the one or more portions of the source code as specified by the directives.
2 Assignments
0 Petitions
Accused Products
Abstract
Compiler based obfuscation is described. To protect portions of a code project with obfuscations, the code is modified within a compiler to produce one or more modifications that obfuscate the code as part of a compilation process. A compiled version of the code is generated having the modifications that are produced within the compiler. In one approach, the compiler is configured to consume an obfuscation description that indicates portions of the code to protect and specifies the modifications to make to the indicated portions. Various different modifications of code may be performed during the compilation process to implement corresponding obfuscation features. For example, the modifications made within a compiler may include, but are not limited to, modifications designed to enable tamper detection, anti-debugging, and/or encryption of the code.
47 Citations
20 Claims
-
1. A method implemented by a computing device to obfuscate source code as part of compilation of source code by a compiler comprising:
-
obtaining an obfuscation description file having directives that specify modifications supported by the compiler to make as part of compilation of the source code to obfuscate one or more portions of the source code, the modifications supported by the compiler including at least one of;
rearranging of code blocks or modules, call redirection, creation of a clone function, applying obfuscation algorithms, changes to symbol attributes and behaviors, segmenting of code blocks, replacing calls, setting absolute references between different portions of the code, addition of jump instructions, encryption of code portions, or modification of entry points into the code;generating obfuscation source code having instructions derived from the obfuscation description file to implement the directives as part of compilation; combining the obfuscation source code and source code into a combined code file; and compiling the combined code file to produce protected compiled code, the compiling including producing the modifications by applying the obfuscation source code included in the combined code file to obfuscate the one or more portions of the source code as specified by the directives. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8)
-
-
9. A system comprising:
-
one or more computing devices; one or more modules stored in memory of the one or more computing devices and operable via the or more computing devices to implement a compiler configured to perform operations to obfuscate source code as part of compilation of the source code including; obtaining by the compiler an obfuscation description file having directives that specify modifications to make as part of compilation of source code to obfuscate one or more portions of the source code; generating obfuscation source code having instructions derived from the obfuscation description file to implement the directives as part of compilation; combining the obfuscation source code and source code into a combined code file; and compiling the combined code file to produce protected compiled code, the compiling including producing the modifications by applying the obfuscation source code included in the combined code file to obfuscate the one or more portions of the source code as specified by the directives, the modifications including one or more of;
rearranging of code blocks or modules, call redirection, creation of a clone function, applying obfuscation algorithms, changes to symbol attributes and behaviors, segmenting of code blocks, replacing calls, setting absolute references between different portions of the code, addition of jump instructions, encryption of code portions, or modification of entry points into the code. - View Dependent Claims (10, 11, 12, 13, 14, 15, 16)
-
-
17. One or more computer-readable storage media storing instructions that, when executed by a computing device, implement a compiler module configured to perform operations comprising:
-
obtaining an obfuscation description file having directives that specify modifications to make as part of compilation of the source code to obfuscate one or more portions of the source code; generating obfuscation source code having instructions derived from the obfuscation description file to implement the directives as part of compilation; combining the obfuscation source code and source code into a combined code file; and compiling the combined code file to produce protected compiled code, the compiling including producing the modifications by applying the obfuscation source code included in the combined code file to obfuscate the one or more portions of the source code as specified by the directives, the modifications including at least one of;
rearranging of code blocks or modules, call redirection, creation of a clone function, applying obfuscation algorithms, changes to symbol attributes and behaviors, segmenting of code blocks, replacing calls, setting absolute references between different portions of the code, addition of jump instructions, encryption of code portions, or modification of entry points into the code. - View Dependent Claims (18, 19, 20)
-
Specification