Compile based obfuscation
First Claim
1. A method comprising:
- modifying code for a development project within a compiler to produce one or more modifications to obfuscate a portion of the code as part of compilation of the code, including;
obtaining an obfuscation description having directives that define the modifications, the modifications designed to enable one or more of;
heap execution verification, or encryption of the code; and
producing the modifications by applying the obfuscation description to intermediate code that combines the code for the development project with code to implement the directives, the obfuscation description configured to designate portions of the code to obfuscate and modifications to make to the one or more portions; and
generating by the compiler a compiled version of the code having the modifications produced within the compiler to obfuscate the portion of code.
3 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.
-
Citations
16 Claims
-
1. A method comprising:
-
modifying code for a development project within a compiler to produce one or more modifications to obfuscate a portion of the code as part of compilation of the code, including; obtaining an obfuscation description having directives that define the modifications, the modifications designed to enable one or more of;
heap execution verification, or encryption of the code; andproducing the modifications by applying the obfuscation description to intermediate code that combines the code for the development project with code to implement the directives, the obfuscation description configured to designate portions of the code to obfuscate and modifications to make to the one or more portions; and generating by the compiler a compiled version of the code having the modifications produced within the compiler to obfuscate the portion of code. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10)
-
-
11. 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 directives indicative of portions of source code for a development project to protect and modifications to make to obfuscate the indicated portions, the modifications designed to enable one or more of heap execution, verification, or encryption of the source code; generating intermediate language code that combines the source code with code to implement the directives; and applying the directives to the intermediate language code to modify the indicated portions in accordance with the directives during compilation of the intermediate language code by the compiler module including modification of one or more functions to execute in an obfuscated form at runtime via a virtual execution environment that emulates operation of obfuscated instructions for the one or more functions. - View Dependent Claims (12, 13)
-
-
14. A computing device comprising:
-
a processing system; one or more modules operable at least in part via hardware of the processing system to implement an integrated development environment (IDE) including; a development module to expose a development interface to enable creation of source code for a software development project; an obfuscation module to; produce an obfuscation description produced through the development interface to specify modifications for a compiler to make during compilation of the source code to obfuscate one or more selected portions of the source code including applying different obfuscation features and modifications on an individual basis to the selected portions as directed by the obfuscation description to individualize protection of the selected portions; associate the obfuscation description with the source code; and supply the obfuscation description for consumption by the compiler module; and a compiler module to compile the source code to produce protected compiled code for the development project using the obfuscation description to implement the specified modifications to obfuscate the one or more selected portions during compilation by interpreting and applying the obfuscation description supplied by the obfuscation module. - View Dependent Claims (15, 16)
-
Specification