Identifying factorable code
First Claim
1. A method implemented by a computing device, the method comprising:
- obtaining a representation of code of a program having multiple functions;
performing analysis on the representation of the code to identify a list of one or more candidate functions from the multiple functions of the program, wherein the list of one or more candidate functions are determined from the analysis to be candidates for locating remotely from a remainder of the code of the program; and
outputting the list of one or more candidate functions determined from the analysis to be candidates for locating remotely from the remainder of the code of the program,wherein performing the analysis on the representation of the code comprises filtering out certain functions of the multiple functions having relatively fewer recursive data dependencies than other functions that remain in the list of one or more candidate functions after the filtering.
2 Assignments
0 Petitions
Accused Products
Abstract
Various embodiments are disclosed that relate to the automated identification of one or more computer program functions for potentially placing on a remote computing device in a split-computational computing environment. For example, one disclosed embodiment provides, on a computing device, a method of determining a factorable portion of code to locate remotely from other portions of the code of a program to hinder unauthorized use and/or distribution of the program. The method includes, on a computing device, receiving an input of a representation of the code of the program, performing analysis on the representation of the code, the analysis comprising one or more of static analysis and dynamic analysis, and based upon the analysis of the code, outputting a list of one or more functions determined from the analysis to be candidates for locating remotely.
-
Citations
20 Claims
-
1. A method implemented by a computing device, the method comprising:
-
obtaining a representation of code of a program having multiple functions; performing analysis on the representation of the code to identify a list of one or more candidate functions from the multiple functions of the program, wherein the list of one or more candidate functions are determined from the analysis to be candidates for locating remotely from a remainder of the code of the program; and outputting the list of one or more candidate functions determined from the analysis to be candidates for locating remotely from the remainder of the code of the program, wherein performing the analysis on the representation of the code comprises filtering out certain functions of the multiple functions having relatively fewer recursive data dependencies than other functions that remain in the list of one or more candidate functions after the filtering. - View Dependent Claims (2, 3, 4, 5, 6, 7, 11, 12, 13, 14, 15, 16)
-
-
8. A computer-readable memory device comprising instructions stored thereon that are executable by a computing device to cause the computing device to perform acts comprising:
-
receiving a control flow graph of an application program and an instrumented version of code of the application program, the application program having multiple functions; performing static analysis of the control flow graph of the application program; based on the static analysis, performing a first filtering of the multiple functions to identify a list of candidate functions that are candidates for remote execution, wherein the first filtering is based at least in part on whether the multiple functions place personally-identifiable information on a remote computing device configured to perform the remote execution; performing dynamic analysis of the instrumented version of the code of the application program; based on the dynamic analysis, performing a second filtering of the list to remove at least some candidate functions from the list; and outputting the list of candidate functions after the first filtering based on the static analysis and the second filtering based on the dynamic analysis. - View Dependent Claims (17, 18, 19, 20)
-
-
9. A computing device, comprising:
-
one or more processing devices; and one or more memory devices having machine-readable instructions stored thereon that, when executed by the one or more processing devices, configure the one or more processing devices to; receive an input of a control flow graph representing code of a program; receive another input of an instrumented version of the code; perform static analysis of the code based upon the control flow graph; determine a subset of functions of the program based upon the static analysis; using the instrumented version of the code, iteratively perform dynamic analysis on the subset of functions to determine a list of functions potentially suitable for factoring; and output the list of functions potentially suitable for factoring, wherein the dynamic analysis is performed iteratively via progressively more computationally-intensive iterations of the dynamic analysis and filtering individual functions of the program from the list after the iterations of the dynamic analysis. - View Dependent Claims (10)
-
Specification