← Back to Patent Explorer
US5673315A Expired / Lapsed US ⏱️ 0.0 years remaining

Method and system for software asset usage detection and management

Assignee: International Business Machines Corp
•
Filing: 1995-07-24
•
Granted: 1997-09-30
•
Expires: 2015-07-24
📄 Original PDF 🌐 Google Patents 🔄 Sync Now

Abstract

Abstract Method and system for detecting attempted invocation of execution of any application program by searching each application's header file information for an operating system kernel Dynamically Linked Library DLL reference and replacing the operating system kernel DLL reference with a intercept routine DLL reference. The intercept routine will be invoked upon attempted invocation of the application program and contains management logic for any desired software asset management function for execution prior to permitting invocation and execution of the application program.

Inventors

  • 👤 Timothy J. Wolf

Bibliographic Details

Application Number —
Jurisdiction US
Data Source google_patents
Last Synchronized 2026-11-05 21:49
CPC Classifications
G; G06; G06F; G06F21/00; G06F21/10; G06F21/12; G06F21/121; G06F21/125; G06F21/126; G06F9/00; G06F9/06; G06F9/44; G06F9/445; G06F9/44521

Claims Analysis

Total Claims: 15
Claim 1
Independent Claim 123 words
In a computer system having a processor, a program memory, and a program execution operating system, a method of managing application program utilization by detecting attempted execution of any application program by said processor, including steps in said processor of: reading an application program header comprising Dynamically Linked Library (DLL) routines identification references; loading into said program memory any said DLL routines identified in said header portion of said application program; executing program logic found in any said DLL routines; and only loading into said program memory a new DLL containing an operating system kernel permitting execution of said application program if the said execution of program logic in at least one of said DLL routines provides execution permission for said application program.
Claim 2
Dependent Claim 123 words
In a computer system having a processor, a program memory, and a program execution operating system, a method of managing application program utilization by detecting attempted execution of any application program by said processor, including steps in said processor of: reading an application program header comprising Dynamically Linked Library (DLL) routines identification references; loading into said program memory any said DLL routines identified in said header portion of said application program; executing program logic found in any said DLL routines; and only loading into said program memory a new DLL containing an operating system kernel permitting execution of said application program if the said execution of program logic in at least one of said DLL routines provides execution permission for said application program.
Claim 3
Dependent Claim 36 words
A method as described in claim 1, further including a step of recording in said memory said executing of said DLL providing said execution permission logic as a record of attempted usage of said application program.
Claim 4
Dependent Claim 23 words
A method as claimed in claim 2, further including a step of recording in said memory a record of said application program's identity.
Claim 5
Dependent Claim 26 words
A method as claimed in claim 3, further including recording in said memory a record of the time at which execution of said application program begins.
Claim 6
Independent Claim 45 words
A method as described in any one of claims 1 through 4, further including a step of returning operation by said operating system to said at least one DLL containing said application usage condition logic at the termination of said execution of said application program.
Claim 7
Dependent Claim 29 words
A method as claimed in claim 5, further including a step of recording in said memory a record at the time of which execution of said application program ended.
Claim 8
Independent Claim 83 words
A method as described in any one of claims 1 through 4, further including a step of searching said application program header to locate a reference to the operating system kernel DLL and, replacing said reference in said application program header with a substitute DLL reference identifying a substitute DLL which contains execution permission logic including a conditional pointer to pass execution from said substitute DLL to said original DLL only if said execution permission is provided by execution of said substitute DLL.
Claim 9
Dependent Claim 78 words
A method as described in claim 5, further including a step of searching said application program header to locate a reference to the operating system kernel DLL and, replacing said reference in said application program header with a substitute DLL reference identifying a substitute DLL which contains execution permission logic including a conditional pointer to pass execution from said substitute DLL to said original DLL only if said execution permission is provided by execution of said substitute DLL.
Claim 10
Dependent Claim 78 words
A method as described in claim 6, further including a step of searching said application program header to locate a reference to the operating system kernel DLL and, replacing said reference in said application program header with a substitute DLL reference identifying a substitute DLL which contains execution permission logic including a conditional pointer to pass execution from said substitute DLL to said original DLL only if said execution permission is provided by execution of said substitute DLL.
Claim 11
Independent Claim 327 words
A method is described in any of claims 2 through 4, further including steps of: comparing said record of attempted usage of said application program against a prestored number representing the authorized limit of use of said application program; and directing said loading into said program memory of said DLL containing said operating system kernel only if said record of attempted usage does not exceed said authorized limit. ______________________________________ Appendix 1 - Sample `C' source code to implement DLL initialization header int .sub.-- CRT.sub.-- init(void); void .sub.-- CRT.sub.-- term(void); static PIB pib; static PTIB tib; unsigned long .sub.-- System .sub.-- DLL.sub.-- InitTerm( unsigned long hModule, unsigned long ulFlag ) { switch(ulFlag) { case 0: // Indicates `Program Starting' { if (.sub.-- CRT.sub.-- init ( ) ==-1) // Required return 0UL; // Load Failed if unsuccessful // Program is attempting to run . . . // One way to get the name of the program running is to use // // DosGetInfoBlocks(&tib,&pib); // // pib ->pib.sub.-- pchcmd holds the command line used // to start the program // // // if (PermissionToRun( )) // perform any verification desired return(1UL); // OK - Load is successful return(0UL); // Load Failed break; } case 1: // Indicates `Program Stopping' { .sub.-- CRT.sub.-- term( ); // Perform any cleanup or execution // termination logic here. return 1UL; // OK } } return 0ul; ______________________________________ ______________________________________ Appendix 2 - Sample Module Definition File for Intercept DLL The following is an example of a module definition file that might be used to create an intercept dll named DOSCALLX.DLL. Note that an Export in the intercept DLL DOSCALLX is no more than a passthrough to its corresponding Export in DOSCALLS LIBRARY DOSCALLX INITINSTANCE TERMINSTANCE PROTMODE DATA NONSHARED MULTIPLE LOADONCALL CODE SHARED LOADONCALL IMPORTS a0000001 = DOSCALLS.1 a0000002 = DOSCALLS.2 a0000003 = DOSCALLS.3 . . . a0000500 = DOSCALLS.500 EXPORTS a000000l @l a0000002 @2 a0000003 @3 . . . a0000500 @500 .sub.-- CRT.sub.-- init ______________________________________
Claim 12
Dependent Claim 190 words
A computer software asset management system for a computer system having a processor, a program memory, and a program execution operating system, said computer system having at least one application program software asset whose usage in said computer system is to be managed, said management system comprising: means in said computer system for reading a header portion of said application program software asset to locate therein any Dynamically Linked Library (DLL) routine references; means in said computer system for loading into said program memory any said DLL routine found to be referenced in said header portion of said application's program; means in said computer system's processor for executing any program logic contained in said DLL routines loaded into said program memory of said computer system; and means in said computer system responsive to the execution of said program logic of at least one of said DLLs for loading into said program memory a new DLL containing an operating system kernel, thereby permitting execution of said application program only when said program logic of said at least one DLL routine provides application execution permission upon execution of said program logic therein.
Claim 13
Dependent Claim 190 words
A computer software asset management system for a computer system having a processor, a program memory, and a program execution operating system, said computer system having at least one application program software asset whose usage in said computer system is to be managed, said management system comprising: means in said computer system for reading a header portion of said application program software asset to locate therein any Dynamically Linked Library (DLL) routine references; means in said computer system for loading into said program memory any said DLL routine found to be referenced in said header portion of said application's program; means in said computer system's processor for executing any program logic contained in said DLL routines loaded into said program memory of said computer system; and means in said computer system responsive to the execution of said program logic of at least one of said DLLs for loading into said program memory a new DLL containing an operating system kernel, thereby permitting execution of said application program only when said program logic of said at least one DLL routine provides application execution permission upon execution of said program logic therein.
Claim 14
Dependent Claim 208 words
A tool for application program management in a computer system having a processor, a program memory, and a program execution operation system, wherein usage of said application program is to be managed, comprising: means, effective in said computer system, for reading a header portion of said application program whose usage in said system is to be managed, and for locating in said header portion any references to Dynamically Linked Library (DLL) routines; means, effective in said computer system, for loading into said program memory of said computer system any said DLL routine found to be referenced in said header portion; means, responsive to said loading step and effective in said computer system's processor, for executing any program logic contained in said referenced DLL routines loaded into said program memory; and means, effective in said computer system and responsive to the execution of said program logic of at least one of said referenced DLL routines, for loading into said program memory a new DLL containing a computer operating system kernel, thereby permitting execution of said application program whose usage is to be managed, said loading occurring only when said program logic of said at least one referenced DLL routine provides execution permission, upon execution of said program logic therein.
Claim 15
Dependent Claim 208 words
A tool for application program management in a computer system having a processor, a program memory, and a program execution operation system, wherein usage of said application program is to be managed, comprising: means, effective in said computer system, for reading a header portion of said application program whose usage in said system is to be managed, and for locating in said header portion any references to Dynamically Linked Library (DLL) routines; means, effective in said computer system, for loading into said program memory of said computer system any said DLL routine found to be referenced in said header portion; means, responsive to said loading step and effective in said computer system's processor, for executing any program logic contained in said referenced DLL routines loaded into said program memory; and means, effective in said computer system and responsive to the execution of said program logic of at least one of said referenced DLL routines, for loading into said program memory a new DLL containing a computer operating system kernel, thereby permitting execution of said application program whose usage is to be managed, said loading occurring only when said program logic of said at least one referenced DLL routine provides execution permission, upon execution of said program logic therein.

References Cited (Backward Citations)

US4584639A Cited
US5390297A Cited
US4937863A Cited
US4924378A Cited
US5023907A Cited
US4941175A Cited
US5138712A Cited
US5222134A Cited
US5375206A Cited
US5204897A Cited
US5319705A Cited

USPTO Annuity & Maintenance Windows

Annuity Stage Window Opens Payment Deadline Surcharge Period Until Estimated Fee Status
3.5 Years (Year 4) 2000-09-29 2001-03-31 2001-09-30 $2000.00 Window Closed / Lapsed
7.5 Years (Year 8) 2004-09-29 2005-03-31 2005-09-30 $3760.00 Window Closed / Lapsed
11.5 Years (Year 12) 2008-09-29 2009-03-31 2009-09-30 $7700.00 Window Closed / Lapsed

Assigned Categories & Tags

No categories assigned to this patent yet.

Assign Category Tag