IP Library Granted Patent US 8,516,469
Granted Patent B2
US 8,516,469 · App. 11/188,818 · Granted Aug 20, 2013

Function binding method and system

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 8,516,469
App. No.
11/188,818
Granted
Aug 20, 2013
Kind
B2
Abstract

The present invention provides a process for generating a shared function binding arrangement comprising a first module and a shared module which includes a plurality of functions and having means for binding a function shared between the first module and the shared module. The process comprises a linking phase for creating the first module and the shared module, a preparation phase for preparing the first module for calling the shared module without exposing details of the call, and a loading phase for loading the modules and linking the first module to a respective function in the shared module without exposing details of the call. The invention also provides a method and system for binding a function shared between a first module and a shared module by means of a linking arrangement a linking arrangement that enables the first module to call a respective function in the shared module without exposing details of the call.

Claims (46)

1. A computer-implemented method comprising:

calling a shared module from a first module for a respective function, concealing details of the call for the respective function, said concealing comprising:

encrypting and embedding marker information in the shared module, wherein the marker information identifies functions including the respective function in the shared module through a shared function table, and wherein the marker information is embedded prior to run time; and

using a respective function proxy in the first module to call a common function pointer in the first module, which makes a call to a general call address in the shared module with an address for a respective dynamic object which knows the address of the respective function: and

linking the first module to the respective function in the shared module.

2. A computer-implemented method according to claim 1 in which linking the first module comprises forming an indirect routing link in the first module between an input carrying a request for the respective function and an output carrying the call to the shared module.

3. A computer-implemented method according to claim 1 in which linking the first module comprises forming an indirect routing link in the shared module between an input carrying the call from the first module and an address for the respective function.

4. A computer-implemented method according to claim 2 in which forming an indirect routing link comprises providing function proxies in the first module.

5. A computer-implemented method according to claim 4 in which forming an indirect routing link comprises using a respective function proxy to access a respective address for a respective dynamic object in the shared module.

6. A computer-implemented method according to claim 3 in which forming an indirect routing link comprises providing a general call address in the shared module for indirectly locating the respective function.

7. A computer-implemented method according to claim 3 in which forming an indirect routing link comprises providing dynamic objects in the shared module including address information for locating the functions.

8. A computer-implemented method according to claim 7 in which forming an indirect routing link comprises using a respective dynamic object in the shared module for locating the respective function.

9. A computer-implemented method according to claim 7 further comprising encrypting the address information.

10. A computer-implemented method according to claim 1 in which linking the first module comprises providing a common function pointer in the first module for locating a general call address in the shared module.

11. A computer-implemented method according to claim 1 in which linking the first module comprises using a dynamic object address in the first module for locating a dynamic object in the shared module.

12. A computer-implemented process comprising:

creating a first module and a shared module, preparing the first module for calling the shared module;

concealing details of a particular call for a respective function, said concealing comprising:

encrypting and embedding marker information in the shared module, wherein the marker information identifies functions including the respective function in the shared module through a shared function table, and wherein the marker information is embedded prior to run time; and

using a respective function proxy in the first module to call a common function pointer in the first module, which makes a call to a general call address in the shared module with an address for a respective dynamic object which knows the address of the respective function; and

loading the first and the shared modules and linking the first module to the respective function in the shared module.

13. A computer-implemented process according to claim 12 in which creating the first module and the shared module comprises generating a first module including a secure library containing information for subsequently locating the functions.

14. A computer-implemented process according to claim 13 in which the secure library comprises markers for locating functions by way of identifiers.

15. A computer-implemented process according to claim 13 in which the secure library comprises function proxies.

16. A computer-implemented process according to claim 12 in which creating the first module and the shared module comprises generating the shared module including the plurality of functions and a shared function table associating identifiers with the functions.

17. A computer-implemented process according to claim 12 in which preparing the first module comprises extracting marker information from the first module and embedding the marker information in the shared module.

18. A computer-implemented process according to claim 17 in which preparing the first module comprises clearing the marker information from the first module.

19. A computer-implemented process according to claim 12 in which the loading phase comprises loading the first module.

20. A computer-implemented process according to claim 19 in which loading comprises loading the shared module on an instruction from the first module.

21. A computer-implemented process according to claim 12 in which loading comprises creating within the shared module dynamic objects including address information for locating the functions.

22. A computer-implemented process according to claim 12 in which loading comprises patching into the first module the common function pointer.

23. A computer-implemented process according to claim 21 in which loading comprises patching into the first module addresses for the dynamic objects.

24. A computer-implemented process according to claim 21 comprising encrypting the address information.

25. A system comprising:

a processor;

a first module;

a shared module including a plurality of functions, and

a linking arrangement that enables the first module to call a respective function in the shared module, the linking arrangement enabling concealing details of the call, said concealing comprising:

encrypting and embedding marker information in the shared module, wherein the marker information identifies functions in the shared module through a shared function table, and wherein the marker information is embedded prior to run time; and

using a respective function proxy in the first module to call a common function pointer in the first module, which makes a call to a general call address in the shared module with an address for a respective dynamic object which knows the address of the respective function.

26. A system according to claim 25 in which the linking arrangement comprises an indirect routing link in the first module between an input for carrying a request for the respective function and an output for carrying a call to the shared module.

27. A system according to claim 25 in which the linking arrangement comprises an indirect routing link in the shared module between an input for carrying a call from the first module and an address for the respective function.

28. A system according to claim 26 in which the indirect routing link comprises a common function pointer in the first module for locating a general call address in the shared module.

29. A system according to claim 26 in which the indirect routing link comprises a respective dynamic object address in the first module for a respective dynamic object in the shared module.

30. A system according to claim 29 in which the indirect routing link comprises a respective function proxy in the first module for routing to the respective dynamic object address.

31. A system according to claim 27 in which the address information is encrypted.

Assignments (24)
RELEASE OF FIRST LIEN SECURITY INTEREST IN PATENTS - REEL/FRAME 045441/ 0499 Recorded Aug 25, 2025
From: JEFFERIES FINANCE LLC
To: FLEXERA SOFTWARE LLC; PALAMIDA, INC.; BDNA CORPORATION
Reel/Frame 072552/0558 →
SECURITY INTEREST Recorded Aug 15, 2025
From: FLEXERA SOFTWARE LLC
To: KKR LOAN ADMINISTRATION SERVICES LLC, AS COLLATERAL GENT
Reel/Frame 072460/0828 →
RELEASE OF SECOND LIEN SECURITY INTEREST IN PATENTS Recorded Apr 18, 2024
From: JEFFERIES FINANCE LLC
To: BDNA CORPORATION; FLEXERA SOFTWARE LLC; PALAMIDA, INC.; RIGHTSCALE, INC.; RISC NETWORKS, LLC; REVULYTICS, INC.
Reel/Frame 067636/0534 →
SECOND LIEN SECURITY AGREEMENT Recorded Mar 3, 2021
From: BDNA CORPORATION; FLEXERA SOFTWARE LLC; PALAMIDA, INC.; RIGHTSCALE, INC.; RISC NETWORKS, LLC; REVULYTICS, INC.
To: JEFFERIES FINANCE LLC
Reel/Frame 055487/0354 →
RELEASE OF SECOND LIEN SECURITY INTEREST Recorded Feb 28, 2020
From: JEFFERIES FINANCE LLC
To: FLEXERA SOFTWARE LLC; PALAMIDA, INC.; BDNA CORPORATION; RIGHTSCALE, INC.; RISC NETWORKS, LLC
Reel/Frame 052049/0560 →
SECOND LIEN SECURITY AGREEMENT Recorded Feb 27, 2018
From: FLEXERA SOFTWARE LLC; PALAMIDA, INC.; BDNA CORPORATION
To: JEFFERIES FINANCE LLC, AS COLLATERAL AGENT
Reel/Frame 045451/0499 →
FIRST LIEN SECURITY AGREEMENT Recorded Feb 26, 2018
From: FLEXERA SOFTWARE LLC; PALAMIDA, INC.; BDNA CORPORATION
To: JEFFERIES FINANCE LLC, AS COLLATERAL AGENT
Reel/Frame 045441/0499 →
TERMINATION OF 2ND LIEN SECURITY INTEREST RECORDED AT REEL/FRAME 032590/0805 Recorded Feb 26, 2018
From: JEFFERIES FINANCE LLC
To: FLEXERA SOFTWARE LLC
Reel/Frame 045447/0842 →
TERMINATION OF 1ST LIEN SECURITY INTEREST RECORDED AT REEL/FRAME 032590/0617 Recorded Feb 26, 2018
From: JEFFERIES FINANCE LLC
To: FLEXERA SOFTWARE LLC
Reel/Frame 045447/0894 →
FIRST LIEN PATENT SECURITY AGREEMENT Recorded Apr 2, 2014
From: FLEXERA SOFTWARE LLC
To: JEFFERIES FINANCE LLC
Reel/Frame 032590/0617 →
RELEASE OF SECURITY INTEREST Recorded Apr 2, 2014
From: BANK OF MONTREAL
To: FLEXERA SOFTWARE LLC
Reel/Frame 032581/0652 →
SECOND LIEN PATENT SECURITY AGREEMENT Recorded Apr 2, 2014
From: FLEXERA SOFTWARE LLC
To: JEFFERIES FINANCE LLC
Reel/Frame 032590/0805 →
AMENDED AND RESTATED PATENT SECURITY AGREEMENT Recorded Mar 28, 2013
From: FLEXERA SOFTWARE LLC
To: BANK OF MONTREAL, AS COLLATERAL AGENT
Reel/Frame 030111/0362 →
RELEASE OF SECURITY INTEREST IN PATENT COLLATERAL AT REEL/FRAME NO. 027022/0202 Recorded Mar 25, 2013
From: BNAK OF MONTREAL, AS COLLATERAL AGENT
To: FLEXERA SOFTWARE LLC
Reel/Frame 030081/0156 →
FIRST LIEN PATENT SECURITY AGREEMENT Recorded Oct 5, 2011
From: FLEXERA SOFTWARE LLC
To: BANK OF MONTREAL, AS COLLATERAL AGENT
Reel/Frame 027021/0054 →
SECOND LIEN PATENT SECURITY AGREEMENT Recorded Oct 5, 2011
From: FLEXERA SOFTWARE LLC
To: BANK OF MONTREAL, AS COLLATERAL AGENT
Reel/Frame 027022/0202 →
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENT COLLATERAL Recorded Oct 3, 2011
From: BARCLAYS BANK PLC, AS ADMINISTRATIVE AGENT
To: FLEXERA SOFTWARE, INC.
Reel/Frame 027004/0601 →
CERTIFICATE OF CONVERSION Recorded Sep 29, 2011
From: FLEXERA SOFTWARE, INC.
To: FLEXERA SOFTWARE LLC
Reel/Frame 026994/0341 →
SECURITY AGREEMENT Recorded Jan 21, 2011
From: FLEXERA SOFTWARE, INC.
To: BARCLAYS BANK PLC, AS ADMINISTRATIVE AGENT
Reel/Frame 025675/0840 →
RELEASE OF SECURITY INTEREST Recorded Jan 20, 2011
From: BANK OF MONTREAL, AS AGENT
To: FLEXERA SOFTWARE, INC. (F/K/A ACRESSO SOFTWARE INC.)
Reel/Frame 025668/0070 →
CHANGE OF NAME Recorded Nov 25, 2009
From: ACRESSO SOFTWARE INC.
To: FLEXERA SOFTWARE, INC.
Reel/Frame 023565/0861 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 18, 2008
From: MACROVISION CORPORATION
To: ACRESSO SOFTWARE INC.
Reel/Frame 020817/0960 →
SECURITY AGREEMENT Recorded Apr 2, 2008
From: ACRESSO SOFTWARE INC.
To: BANK OF MONTREAL, AS AGENT
Reel/Frame 020741/0288 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 25, 2005
From: HOLLOWAY, MARK RICHARD; GRAY, MARTIN CLIVE; STIEMENS, ALAN WALTER; WYLES, DAVID CHRISTOPHER
To: MACROVISION CORPORATION
Reel/Frame 016798/0786 →