Fixing incompatible applications by providing stubs for APIs
First Claim
Patent Images
1. A method for patching an application that is incompatible with an operating system, wherein the application has an associated address space, and a dynamic link library, the dynamic link library containing functions and having an associated import table containing function pointers, the method comprising:
- (a) starting the application;
(b) determining if the application is compatible or incompatible with the operating system by determining if information about the application is included in information that identifies applications that are incompatible with the operating system;
(c) inserting a shim dynamic link library within the application'"'"'s address space if the application is incompatible with the operating system, the shim dynamic link library;
(i) determining the functions of the incompatible application that need to be patched; and
(ii) patching the functions of the incompatible application that need to be patched; and
(d) running the application.
2 Assignments
0 Petitions
Accused Products
Abstract
A computer method for patching applications that are incompatible with an operating system is provided. The method determines if an application is compatible with an operating system, and if the application is determined to be incompatible, a shim dynamic link library is loaded that replaces all of the incompatible functions contained within the application'"'"'s dynamic link libraries.
119 Citations
37 Claims
-
1. A method for patching an application that is incompatible with an operating system, wherein the application has an associated address space, and a dynamic link library, the dynamic link library containing functions and having an associated import table containing function pointers, the method comprising:
-
(a) starting the application;
(b) determining if the application is compatible or incompatible with the operating system by determining if information about the application is included in information that identifies applications that are incompatible with the operating system;
(c) inserting a shim dynamic link library within the application'"'"'s address space if the application is incompatible with the operating system, the shim dynamic link library;
(i) determining the functions of the incompatible application that need to be patched; and
(ii) patching the functions of the incompatible application that need to be patched; and
(d) running the application. - View Dependent Claims (2, 3, 4, 5, 6, 7)
(a) installing a hook if the application is incompatible, the hook;
(i) dynamically determining when a call has been made to load a dynamic link library;
(ii) notifying the shim dynamic link library when a call has been made to load a dynamic link library; and
(iii) dynamically determining what functions are incompatible with the operating system; and
(b) the shim dynamic link library dynamically patching the functions of the incompatible application that need to be patched.
-
-
3. The method of claim 1, wherein determining if information about the application is included in information that identifies applications that are incompatible with the operating system comprises:
-
(a) determining if at least one identifying attribute of a plurality of identifying attributes of the started application matches at least one identifying attribute of a plurality of identifying attributes of incompatible applications; and
(b) if at least one of the identifying attributes matches, determining that the running application is incompatible, otherwise determining that the running application is compatible.
-
-
4. The method of claim 3, wherein determining if information about the application is included in information that identifies applications that are incompatible with the operating system further comprises:
-
storing identifying attributes of incompatible applications; and
retrieving at least one of the stored identifying attributes for determining if at least one identifying attribute of a plurality of identifying attributes of the started application matches at least one of the stored identifying attributes of incompatible applications.
-
-
5. The method of claim 4, wherein determining if information about the application is included in information that identifies applications that are incompatible with the operating system further comprises:
-
comparing additional identifying attributes of the started application with the stored identifying attributes of incompatible applications; and
if the identifying attributes match, determining that the application is incompatible.
-
-
6. The method of claim 5, wherein the shim dynamic link library'"'"'s determination of what functions of the incompatible application need to be patched comprises:
-
(a) loading a hook dynamic link library into the application'"'"'s address space, the hook dynamic link library;
(i) containing a list of incompatible functions; and
(ii) containing a group of stub functions for patching the list of incompatible functions; and
(b) the shim dynamic link library accessing the list of incompatible functions from the hook library and applying the group of stub functions to the functions of the incompatible application.
-
-
7. The method of claim 6, wherein patching the incompatible functions of the incompatible application further comprises:
-
(a) loading the started application'"'"'s dynamic link library;
(b) locating the incompatible functions within the loaded application'"'"'s dynamic link library; and
(c) replacing the incompatible functions within the loaded application'"'"'s dynamic link library with the stub functions.
-
-
8. A method for patching an application that is incompatible with an operating system, wherein the application has an associated address space and a dynamic link library, the dynamic link library containing functions and having an associated import table containing function pointers, the method comprising:
-
(a) running the application;
(b) determining if the application is compatible or incompatible with the operating system by determining if information about the application is included in information that identifies applications that are incompatible with the operating system; and
(c) if the application is incompatible, installing a hook, the hook;
(i) dynamically determining when a call has been made to load a dynamic link library;
(ii) dynamically determining what functions are incompatible with the operating system; and
(iii) patching the incompatible functions. - View Dependent Claims (9, 10, 11, 12, 13)
(a) installing a shim dynamic link library into the application'"'"'s address space capable of receiving notification that a call has been made to load a dynamic link library;
(b) the hook notifying the shim dynamic link library when a call has been intercepted; and
(c) the shim dynamic link library patching the incompatible functions.
-
-
10. The method of claim 9, wherein determining if information about the application is included in information that identifies applications that are incompatible with the operating system comprises:
-
(a) determining if at least one identifying attribute of a plurality of identifying attributes of the running application matches at least one identifying attribute of a plurality of identifying attributes of incompatible applications; and
(b) if at least one of the identifying attributes matches, determining that the running application is incompatible, otherwise determining that the running application is compatible.
-
-
11. The method of claim 10, wherein determining if information about the application is included in information that identifies applications that are incompatible with the operating system further comprises:
-
(a) storing identifying attributes of incompatible applications; and
(b) retrieving at least one of the stored identifying attributes for determining if at least one identifying attribute of a plurality of identifying attributes of the running application matches at least one of the stored identifying attributes of incompatible applications.
-
-
12. The method of claim 11, wherein determining if information about the application is included in information that identifies applications that are incompatible with the operating system further comprises:
-
comparing additional identifying attributes of the running application with the stored identifying attributes of incompatible applications; and
if the identifying attributes match, determining that the application is incompatible.
-
-
13. The method of claim 12, wherein the shim dynamic library:
-
(a) loads a hook dynamic link library containing a group of incompatible functions; and
(b) patches the application based on the group of incompatible functions.
-
-
14. A computer-readable medium having computer executable instructions for patching an application that is incompatible with an operating system, wherein the application has an associated address space and a dynamic link library, the dynamic link library containing functions and having an associated import table containing function pointers, which when executed, comprise:
-
(a) starting the application;
(b) determining if the application is compatible or incompatible with the operating system bv determining if information about the application is included in information that identifies applications that are incompatible with the operating system;
(c) inserting a shim dynamic link library within the application'"'"'s address space if the application is incompatible with the operating system, the shim dynamic link library;
(i) determining the functions of the incompatible application that need to be patched; and
(ii) patching the incompatible functions of the incompatible application that need to be patched; and
(d) running the application. - View Dependent Claims (15, 16, 17, 18, 19)
(a) determining if at least one identifying attribute of a plurality of identifying attributes of the started application matches at least one identifying attribute of a plurality of identifying attributes of incompatible applications; and
(b) if at least one of the identifying attributes matches, determining that the running application is incompatible, otherwise determining that the running application is compatible.
-
-
16. The computer-readable medium of claim 15, wherein determining if information about the application is included in information that identifies applications that are incompatible with the operating system further comprises:
-
storing identifying attributes of incompatible applications; and
retrieving at least one of the stored identifying attributes for determining if at least one identifying attribute of a plurality of identifying attributes of the started application matches the at least one of the stored identifying attributes of incompatible applications.
-
-
17. The computer-readable medium of claim 16, wherein determining if information about the application is included in information that identifies applications that are incompatible with the operating system further comprises:
-
(a) comparing additional identifying attributes of the started application with the stored identifying attributes of incompatible applications; and
(b) if the identifying attributes match, determining that the application is incompatible.
-
-
18. The computer-readable medium of claim 17, wherein the shim dynamic link library'"'"'s determination of what functions of the incompatible application need to be patched comprises:
-
(a) loading a hook dynamic link library into the application'"'"'s address space, the hook dynamic link library;
(i) containing a list of incompatible functions; and
(ii) containing a group of stub functions for patching the list of incompatible functions; and
(b) the shim dynamic link library accessing the list of incompatible functions from the hook library and applying the group of stub functions to the functions of the incompatible application.
-
-
19. The computer-readable medium of claim 18, wherein patching the incompatible functions of the incompatible application further comprises:
-
(a) loading the started application'"'"'s dynamic link library;
(b) locating the incompatible functions within the loaded application'"'"'s dynamic link library; and
(c) replacing the incompatible functions within the loaded application'"'"'s dynamic link library with the stub functions.
-
-
20. A computer-readable medium having computer executable instructions for patching an application that is incompatible with an operating system, wherein the application has an associated address space and a dynamic link library, the dynamic link library containing functions and having an associated import table containing function pointers, which when executed, comprise:
-
(a) running the application;
(b) determining if the application is compatible or incompatible with the operating system by determining if information about the application is included in information that identifies applications that are incompatible with the operating system; and
(c) if the application is incompatible, installing a hook, the hook;
(i) dynamically determining when a call has been made to load a dynamic link library;
(ii) dynamically determining what functions are incompatible with the operating system; and
(iii) patching the incompatible functions. - View Dependent Claims (21, 22, 23, 24, 25)
(a) installing a shim dynamic link library into the application'"'"'s address space; and
(b) the hook notifying the shim dynamic link library when a call has been intercepted.
-
-
22. The computer-readable medium of claim 21, wherein determining if information about the application is included in information that identifies applications that are incompatible with the operating system further comprises:
-
(a) determining if at least one identifying attribute of a plurality of identifying attributes of the running application matches at least one identifying attribute of a plurality of identifying attributes of incompatible applications; and
(b) if at least one of the identifying attributes matches, determining that the running application is incompatible, otherwise determining that the running application is compatible.
-
-
23. The computer-readable medium of claim 22, wherein determining if information about the application is included in information that identifies applications that are incompatible with the operating system comprises:
-
(a) storing identifying attributes of incompatible applications; and
(b) retrieving at least one of the stored identifying attributes for determining if at least one identifying attribute of a plurality of identifying attributes of the running application matches the at least one of the stored identifying attributes of incompatible applications.
-
-
24. The computer-readable medium of claim 23, wherein determining if information about the application is included in information that identifies applications that are incompatible with the operating system further comprises:
-
comparing additional identifying attributes of the running application with the stored identifying attributes of incompatible applications; and
if the identifying attributes match, determining that the application is incompatible.
-
-
25. The computer-readable medium of claim 24, wherein the shim dynamic library:
-
(a) loads a hook dynamic link library containing a group of incompatible functions; and
(b) patches the application based on the group of incompatible functions.
-
-
26. A computer system for patching an application that is incompatible with an operating system, wherein the computer system is capable of running an application having an associated address space and a dynamic link library, the dynamic link library containing functions and having an associated import table containing function pointers, the method comprising:
-
(a) starting the application;
(b) determining if the application is compatible or incompatible with the operating system by determining if information about the application is included in information that identifies applications that are incompatible with the operating system;
(c) inserting a shim dynamic link library within the application'"'"'s address space if the application is incompatible with the operating system, the shim dynamic link library;
(i) determining the functions of the incompatible application that need to be patched; and
(ii) patching the incompatible functions of the incompatible application that need to be patched; and
(d) running the application. - View Dependent Claims (27, 28, 29, 30, 31)
(a) determining if at least one identifying attribute of a plurality of identifying attributes of the started application matches at least one identifying attribute of a plurality of identifying attributes of incompatible applications; and
(b) if at least one of the identifying attributes matches, determining that the running application is incompatible, otherwise determining that the running application is compatible.
-
-
28. The computer system of claim 27, wherein determining if information about the application is included in information that identifies applications that are incompatible with the operating system further comprises:
-
storing identifying attributes of incompatible applications; and
retrieving at least one of the stored identifying attributes for determining if at least one identifying attribute of a plurality of identifying attributes of the started application matches the at least one of the stored identifying attributes of incompatible applications.
-
-
29. The computer system of claim 28, wherein determining if information about the application is included in information that identifies applications that are incompatible with the operating system further comprises:
-
comparing additional identifying attributes of the started application with the stored identifying attributes of incompatible applications; and
if the identifying attributes match, determining that the application is incompatible.
-
-
30. The computer system of claim 29, wherein the shim dynamic link library'"'"'s determination of what functions of the incompatible application need to be patched comprises:
-
(a) loading a hook dynamic link library into the application'"'"'s address space, the hook dynamic link library;
(i) containing a list of incompatible functions; and
(ii) containing a group of stub functions for patching the list of incompatible functions; and
(b) the shim dynamic link library accessing the list of incompatible functions from the hook library and applying the group of stub functions to the functions of the incompatible application.
-
-
31. The computer system of claim 30, wherein patching the incompatible functions of the incompatible application comprises:
-
(a) loading the started application'"'"'s dynamic link library;
(b) locating the incompatible functions within the loaded application'"'"'s dynamic link library; and
(c) replacing the incompatible functions within the loaded application'"'"'s dynamic link library with the stub functions.
-
-
32. A computer system for patching an application that is incompatible with an operating system, wherein the application has an associated address space and a dynamic link library, the dynamic link library containing functions and having an associated import table containing function pointers, the method comprising:
-
(a) running the application;
(b) determining if the application is compatible or incompatible with the operating system by determining if information about the application is included in information that identifies applications that are incompatible with the operating system; and
(c) if the application is incompatible, installing a hook, the hook;
(i) dynamically determining when a call has been made to load a dynamic link library;
(ii) dynamically determining what functions are incompatible with the operating system; and
(iii) patching the incompatible functions. - View Dependent Claims (33, 34, 35, 36, 37)
(a) installing a shim dynamic link library into the application'"'"'s address space; and
(b) the hook notifying the shim dynamic link library when a call has been intercepted.
-
-
34. The computer system of claim 33, wherein determining if information about the application is included in information that identifies applications that are incompatible with the operating system comprises:
-
(a) determining if at least one identifying attribute of a plurality of identifying attributes of the running application matches at least one identifying attribute of a plurality of identifying attributes of incompatible applications; and
(b) if at least one of the identifying attributes matches, determining that the running application is incompatible, otherwise determining that the running application is compatible.
-
-
35. The computer system of claim 34, wherein determining if information about the application is included in information that identifies applications that are incompatible with the operating system comprises:
-
(a) storing identifying attributes of incompatible applications; and
(b) retrieving at least one of the stored identifying attributes for determining if at least one identifying attribute of a plurality of identifying attributes of the running application matches the at least one of the stored identifying attributes of incompatible applications.
-
-
36. The computer system of claim 35, wherein determining if information about the application is included in information that identifies applications that are incompatible with the operating system further comprises:
-
comparing additional identifying attributes of the running application with the stored identifying attributes of incompatible applications; and
if the identifying attributes match, determining that the application is incompatible.
-
-
37. The computer system of claim 36, wherein the shim dynamic library:
-
(a) loads a hook dynamic link library containing a group of incompatible functions; and
(b) patches the application based on the group of incompatible functions.
-
Specification