IP Library Granted Patent US 7,487,495
Granted Patent B2
US 7,487,495 · App. 11/107,907 · Granted Feb 3, 2009

Generic framework for runtime interception and execution control of interpreted languages

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 7,487,495
App. No.
11/107,907
Granted
Feb 3, 2009
Kind
B2
Abstract

A system and method for controlling execution of an interpreted language. Statements of the interpreted language to be executed by a script engine are intercepted by a protection module and control is passed to a script helper module that is asociated with the script engine. The script helper module establishes a secure communications channel with an authorization component and passes the statements and an authorization request to the authorization component. The authorization component sends a reply to the script helper module which either permits the script engine to execute the statement or cancels the attempted execution. When the script engine is loaded, a list is updated identifying the script engine. If a script helper module is not present for the loaded script engine, a boot-strap loader is called to load the script helper module. A special information block contains data as to the location of the interception points.

Claims (26)

1. A method for controlling the execution of a statement of interpreted computer language code, the method comprising the steps of:

determining that a statement of computer language code is attempting execution or that there is an invocation request to execute a statement of computer language code;

intercepting the statement or invocation request prior to execution of the computer language code;

passing control to a script helper module associated with a script engine able to interpret the statement of computer language code if a script helper module is present;

passing control to a boot-strap loader if a script helper module is not present, retrieving an address of an information block (IDD) associated with a script engine able to interpret the statement of computer language code, wherein the information block identifies a script helper module associated with the script engine, and loading the script helper module identified in the information block;

accessing the interpreted language code using the script helper module;

identifying origin information relating to the statement of computer language code;

establishing a secure communications channel with an authorization component;

sending the interpreted language code over the channel with the identified origin information;

receiving a reply from the authorization component;

passing the original statement of computer language code or invocation request to the script engine, if execution thereof is permitted; and

canceling the attempting execution of invocation request, if execution of the code is not permitted.

2. A method for controlling execution of a statement of interpreted computer language code as recited in claim 1 , wherein the information block (IDD) identifies a list of routines that must be intercepted.

3. A method for controlling execution of a statement of interpreted computer language code as recited in claim 2 , further comprising, prior to passing control to the boot- strap loader if a script helper module is not present, passing control to a trampoline structure that invokes the boot-strap loader, wherein the trampoline structure includes an address of a boot- strap block and a short sequence of code, wherein passing control to the trampoline structure includes executing the short sequence of code in the trampoline structure.

4. A method for controlling execution of a statement of interpreted computer language code as recited in claim 1 , further comprising, prior to the step of determining that a statement of computer language code is attempting execution or that there is an invocation request to execute a statement of computer language code, loading the script engine that is able to interpret the statement of computer language code.

5. A method for controlling execution of a statement of interpreted computer language code as recited in claim 4 , wherein the step of loading a script engine that is able to interpret the statement of computer language code further includes:

obtaining an IDD for the script engine that interprets the statement of the computer language code;

obtaining a list of export routines that must be intercepted and a location of the script helper module from the IDD; and

adding a pointer from the script engine and adding its IDD to a list of loaded script engines.

6. A method for controlling execution of a statement of interpreted computer language code as recited in claim 1 , further comprising, prior to the step of intercepting the statement or invocation request prior to execution of the computer language code, setting up an intercept structure.

7. A method for controlling execution of a statement of interpreted computer language code as recited in claim 6 , wherein the step of setting up the intercept structure includes:

traversing an in-memory runnable image of the script engine to locate one or more routines described in its IDD that must be intercepted;

storing one or more entry point addresses of the one or more routines that must be intercepted in a trampoline structure; and

overwriting the one or more original entry point addresses in the script engine to be the one or more entry points of the trampoline structure, wherein the trampoline structure includes the address of the intercepted routine, the address of the intercepting routine, an address of a boot- strap block, an integer tag and a short sequence of code.

8. A method for controlling execution as recited in claim 1 , wherein the reply from the authorization component is either a preset reply if there is match between a set of stored identities and the intercepted language statements and said preset reply exists or is a user reply in response to a query sent to a user.

9. A method for controlling execution as recited in claim 8 , wherein the reply is a denial of permission if there is match, but no preset reply.

Assignments (16)
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 - 41459/0436 Recorded Dec 1, 2020
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: HEAT SOFTWARE USA INC.
Reel/Frame 054560/0713 →
RELEASE OF SECURITY INTEREST : RECORDED AT REEL/FRAME - 41052/0735 Recorded Dec 1, 2020
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: HEAT SOFTWARE USA INC.
Reel/Frame 054560/0744 →
MERGER Recorded Jan 10, 2019
From: HEAT SOFTWARE USA INC.
To: IVANTI, INC.
Reel/Frame 047950/0296 →
RELEASE OF SECURITY INTERESTS IN PATENTS AT REEL/FRAME NO. 33380/0644 Recorded Jan 21, 2017
From: WELLS FARGO BANK, NATIONAL ASSOCIATION
To: HEAT SOFTWARE USA INC., AS SUCCESSOR IN INTEREST TO LUMENSION SECURITY, INC.
Reel/Frame 041052/0794 →
SECOND LIEN PATENT SECURITY AGREEMENT Recorded Jan 20, 2017
From: HEAT SOFTWARE USA INC.
To: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT
Reel/Frame 041052/0735 →
FIRST LIEN PATENT SECURITY AGREEMENT Recorded Jan 20, 2017
From: HEAT SOFTWARE USA INC.
To: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT
Reel/Frame 041459/0436 →
MERGER AND CHANGE OF NAME Recorded Jan 18, 2017
From: LUMENSION SECURITY INC.; HEAT SOFTWARE USA INC.
To: HEAT SOFTWARE USA INC.
Reel/Frame 041010/0854 →
RELEASE OF SECURITY INTEREST Recorded Oct 25, 2016
From: CONSORTIUM FINANCE, LLC
To: NETMOTION WIRELESS HOLDINGS, INC.; NETMOTION WIRELESS, INC.; LUMENSION SECURITY, INC.
Reel/Frame 040479/0001 →
PATENT SECURITY AGREEMENT (SECOND LIEN) Recorded Jul 23, 2014
From: NETMOTION WIRELESS HOLDINGS, INC.; NETMOTION WIRELESS, INC.; LUMENSION SECURITY, INC.
To: CONSORTIUM FINANCE, LLC
Reel/Frame 033381/0536 →
PATENT SECURITY AGREEMENT Recorded Jul 22, 2014
From: LUMENSION SECURITY, INC.
To: WELLS FARGO BANK, NATIONAL ASSOCIATION
Reel/Frame 033380/0644 →
CHANGE OF NAME Recorded Jul 15, 2010
From: PATCHLINK CORPORATION
To: LUMENSION SECURITY, INC.
Reel/Frame 024686/0582 →
MERGER Recorded Apr 30, 2010
From: SECUREWAVE S.A.
To: PATCHLINK CORPORATION
Reel/Frame 024312/0915 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 4, 2005
From: USOV, VIACHESLAV
To: SECUREWAVE S.A.
Reel/Frame 016857/0546 →