IP Library Granted Patent US 9,141,613
Granted Patent B2
US 9,141,613 · App. 13/663,958 · Granted Sep 22, 2015

Systems and methods for determining an address for a private function

Inventor: David Brylyn (Warrington, GB)
Assignee: AppSense Limited
G06F17/30011G06F8/53
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 9,141,613
App. No.
13/663,958
Granted
Sep 22, 2015
Kind
B2
Abstract

Systems and methods are provided for determining an address for a private function. A start address for a public function of a software program in a data file associated with the software program is determined. Instruction data for the public function is identified in the data file based on the start address of the public function. First data of a predetermined size is read from a beginning of the instruction data for the public function. A signature for a private function of the software program is identified in the first data. A relative address for the private function in the data file based on the identified signature is stored in memory.

Claims (60)

1. A computerized method for determining an address of a private function, the method comprising:

determining, by a computing device, a start address for a public function of a software program in a data file associated with the software program, wherein the public function is an exported function of the software program;

identifying, by the computing device, instruction data for the public function in the data file based on the start address of the public function;

reading, by the computing device, first data of a predetermined size from a beginning of the instruction data for the public function;

identifying, by the computing device, a signature for a private function of the software program in the first data, wherein the private function is not an exported function of the software program but is instead an internal function of the software program; and

storing, by the computing device in memory, a relative address for the private function in the data file based on the identified signature.

2. The method of claim 1 , further comprising:

receiving data indicative of the signature for the private function, wherein the signature is identified from assembly code associated with the software program; and

determining the predetermined size based on the signature.

3. The method of claim 1 , wherein identifying comprises:

searching the first data for the signature of the private function;

determining the signature is not contained within the first data; and

searching the first data for end point data indicative of an end of the instruction data for the public function.

4. The method of claim 3 , further comprising:

identifying the end point data within the first data; and

returning data indicative of the signature not being located in the instruction data of the public function.

5. The method of claim 3 , further comprising:

determining the end point data is not contained within the first data; and

reading second data of the predetermined size from a next location of the instruction data in the data file.

6. The method of claim 1 , further comprising:

intercepting a call of the private function by the software program; and

executing a custom function of a second software program in place of the private function.

7. The method of claim 6 , further comprising determining the address of the private function after the second software program is compiled.

8. The method of claim 1 , wherein determining the start address comprises determining the start address based on a table in the data file, wherein the table lists a set of public functions for the software program.

9. The method of claim 1 , wherein the data file comprises byte code that defines public computer functions for the software program, private computer functions for the software program, or both, wherein:

identifying comprises identifying a set of byte code in the data file comprising instruction data for the public function based on the start address of the public function;

reading comprises reading the predetermined size of byte code from the beginning of the set of byte code for the public function; and

identifying comprises identifying the signature for the private function of the software program in the read predetermined size of byte code.

10. A server for determining an address of a private function, the server comprising:

a database; and

a processor in communication with the database, and configured to run a module stored in memory that is configured to cause the processor to:

determine a start address for a public function of a software program in a data file in the database associated with the software program, wherein the public function is an exported function of the software program;

identify instruction data for the public function in the data file based on the start address of the public function;

read first data of a predetermined size from a beginning of the instruction data for the public function;

identify a signature for a private function of the software program in the first data, wherein the private function is not an exported function of the software program but is instead an internal function of the software program; and

store, in the memory, a relative address for the private function in the data file based on the identified signature.

11. A non-transitory computer readable medium having executable instructions operable to cause an apparatus to:

determine a start address for a public function of a software program in a data file associated with the software program, wherein the public function is an exported function of the software program;

identify instruction data for the public function in the data file based on the start address of the public function;

read first data of a predetermined size from a beginning of the instruction data for the public function;

identify a signature for a private function of the software program in the first data, wherein the private function is not an exported function of the software program but is instead an internal function of the software program; and

store in memory a relative address for the private function in the data file based on the identified signature.

12. The non-transitory computer readable medium of claim 11 , wherein the instructions are further operable to cause an apparatus to:

receiving data indicative of the signature for the private function, wherein the signature is identified from assembly code associated with the software program; and

determining the predetermined size based on the signature.

13. The non-transitory computer readable medium of claim 11 , wherein the instructions are further operable to cause an apparatus to:

searching the first data for the signature of the private function;

determining the signature is not contained within the first data; and

searching the first data for end point data indicative of an end of the instruction data for the public function.

14. The non-transitory computer readable medium of claim 13 , wherein the instructions are further operable to cause an apparatus to:

identifying the end point data within the first data; and

returning data indicative of the signature not being located in the instruction data of the public function.

15. The non-transitory computer readable medium of claim 13 , wherein the instructions are further operable to cause an apparatus to:

determining the end point data is not contained within the first data; and

reading second data of the predetermined size from a next location of the instruction data in the data file.

16. The non-transitory computer readable medium of claim 11 , wherein the instructions are further operable to cause an apparatus to:

intercepting a call of the private function by the software program; and

executing a custom function of a second software program in place of the private function.

17. The non-transitory computer readable medium of claim 11 , further comprising determining the address of the private function after the second software program is compiled.

18. The non-transitory computer readable medium of claim 11 , wherein determining the start address comprises determining the start address based on a table in the data file, wherein the table lists a set of public functions for the software program.

Assignments (17)
CORRECTIVE ASSIGNMENT TO CORRECT THE PROPERTY 14633493 WHICH WAS ENTERED INCORRECTLY AS 14633793 PREVIOUSLY RECORDED ON REEL 71176 FRAME 315. ASSIGNOR(S) HEREBY CONFIRMS THE FIRST LIEN NEWCO SECURITY AGREEMENT. Recorded Nov 10, 2025
From: PULSE SECURE, LLC; IVANTI, INC.; IVANTI US LLC; IVANTI SECURITY HOLDINGS LLC
To: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT
Reel/Frame 073818/0515 →
FIRST LIEN NEWCO SECURITY AGREEMENT Recorded May 5, 2025
From: PULSE SECURE, LLC; IVANTI, INC.; IVANTI US LLC; IVANTI SECURITY HOLDINGS LLC
To: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT
Reel/Frame 071176/0315 →
SECURITY INTEREST Recorded May 3, 2025
From: IVANTI US LLC
To: ALTER DOMUS (US) LLC
Reel/Frame 071165/0089 →
NOTICE OF SUCCESSION OF AGENCY FOR SECURITY INTEREST AT REEL/FRAME 054665/0873 Recorded Apr 29, 2025
From: BANK OF AMERICA, N.A., AS RESIGNING AGENT
To: ALTER DOMUS (US) LLC, AS SUCCESSOR AGENT
Reel/Frame 071123/0386 →
SECURITY INTEREST Recorded Dec 9, 2020
From: CELLSEC, INC.; PULSE SECURE, LLC; IVANTI, INC.; MOBILEIRON, INC.; IVANTI US LLC
To: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT
Reel/Frame 054665/0062 →
SECURITY INTEREST Recorded Dec 9, 2020
From: CELLSEC, INC.; PULSE SECURE, LLC; INVANTI, INC.; MOBILEIRON, INC.; INVANTI US LLC
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 054665/0873 →
RELEASE OF SECURITY INTEREST : RECORDED AT REEL/FRAME - 43971/0495 Recorded Dec 1, 2020
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: APPSENSE US LLC
Reel/Frame 054560/0278 →
RELEASE OF SECURITY INTEREST : RECORDED AT REEL/FRAME - 43971/0549 Recorded Dec 1, 2020
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: APPSENSE US LLC
Reel/Frame 054560/0389 →
CHANGE OF NAME Recorded Mar 5, 2019
From: APPSENSE US LLC
To: IVANTI US LLC
Reel/Frame 048511/0832 →
FIRST LIEN PATENT SECURITY AGREEMENT Recorded Sep 15, 2017
From: APPSENSE US LLC
To: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT
Reel/Frame 043971/0495 →
SECOND LIEN PATENT SECURITY AGREEMENT Recorded Sep 15, 2017
From: APPSENSE US LLC
To: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT
Reel/Frame 043971/0549 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 25, 2017
From: APPSENSE LIMITED
To: APPSENSE US LLC
Reel/Frame 043406/0821 →
RELEASE OF SECURITY INTEREST IN PATENTS RECORDED AT R/F 038333/0821 Recorded Sep 28, 2016
From: JEFFERIES FINANCE LLC
To: APPSENSE LIMITED
Reel/Frame 040171/0172 →
RELEASE OF SECURITY INTEREST IN PATENTS RECORDED AT R/F 038333/0879 Recorded Sep 28, 2016
From: JEFFERIES FINANCE LLC
To: APPSENSE LIMITED
Reel/Frame 040169/0981 →
SECURITY INTEREST Recorded Apr 20, 2016
From: APPSENSE LIMITED
To: JEFFERIES FINANCE LLC
Reel/Frame 038333/0821 →
SECURITY INTEREST Recorded Apr 20, 2016
From: APPSENSE LIMITED
To: JEFFERIES FINANCE LLC
Reel/Frame 038333/0879 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 4, 2012
From: BRYLYN, DAVID
To: APPSENSE LIMITED
Reel/Frame 029403/0645 →
Continuity (1)
Related Publication 20140122454A1 · May 1, 2014