IP Library Granted Patent US 9,355,229
Granted Patent B2
US 9,355,229 · App. 13/976,465 · Granted May 31, 2016

Method for protecting an application program and related computer program product

Inventors: Peer Wichmann (Bruchsal, DE); Alexander Schmitt (Sinsheim-Reihen, DE)
Assignee: WIBU-Systems AG
G06F21/14G06F8/54G06F9/44521
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,355,229
App. No.
13/976,465
Granted
May 31, 2016
Kind
B2
Abstract

A Method for protecting an application program executable on a computer against reverse engineering, said application is created to run with at least one selected dynamic link library (DLL) on said computer, comprises the steps of: adding a specific library loader to the executable application program, said loader either contains or has access to said dynamic link library; setting modified references to said dynamic link library such that upon loading said application program and said loader into the main memory of said computer, said dynamic link library is initialized by said library loader instead of the operating system; The library loader and the pseudo-statically linked library could be embedded into the application program, thereby using unused space within the application. The protected application presents itself as a monolithic application without the vulnerable interface to a DLL.

Claims (41)

1. A method for protecting an application program, executable on a computer, against reverse engineering, said application program being created to run with at least one selected dynamic link library (DLL) on said computer, comprising:

adding a specific dynamic link library loader to an executable application program, said specific dynamic link library loader either contains or has access to a dynamic link library (DLL), wherein the DLL contains encryption functions;

modifying the references in the application program to said DLL such that upon loading said application program and said specific dynamic link library loader into a main memory of the a computer, said DLL is initialized by said dynamic link library loader instead of by the operating system, thereby statically attaching the DLL to the application program; and

embedding the thus modified version of the DLL into the application program.

2. The method according to claim 1 , wherein, upon loading the application program in the main memory of the computer, a list of references maintained by the operating system in order to link said DLL to the application is replaced at least partly by a list referring to said DLL.

3. The method according to claim 1 , wherein, upon loading the application program, a call that references a table entry is changed so that the DLL is called directly.

4. The method according to claim 1 , wherein the dynamic link library loader and the DLL are placed as appendices to the application.

5. The method according to claim 1 , wherein the dynamically linked library loader is stored into the application, thereby using unused space within the application.

6. The method according to claim 1 , further comprising:

placing the dynamic link library loader itself as an extended dynamic link library; and

modifying the application such, that it does no longer references the DLL to be linked but instead references the dynamic link library loader.

7. The method according to claim 1 wherein other shared dynamic link libraries in a process space are provided by said loader with the correct references to said DLL.

8. A computer readable, non-transitory medium, on which is stored a program product comprising:

an application program executable on a computer;

at least one selected dynamic link library (DLL) on said computer, said at least one selected DLL being adapted to be linked to said application program, the at least one DLL containing encryption functions;

wherein a specific library loader is added to the executable application program, said specific library loader either contains or has access to said at least one selected DLL and is adapted to initialize said at least one selected DLL to be used and to set references to said at least one selected DLL in the correct places of the application program, thereby attaching said at least one selected DLL statically to the application program, the thus modified version of said at least one selected DLL being embedded into the application program.

9. The computer readable, non-transitory medium according to claim 8 , wherein the specific library loader is stored into the application program, thereby using unused space within the application.

10. A method for linking a selected dynamic link library (DLL) containing encryption functions to an executable application program upon starting the application running on a computer, comprising:

loading a dynamic link library loader together with said application program into the main memory of said computer, said dynamic link library loader either contains or has access to said selected DLL;

wherein said dynamic link library loader is embedded into the application program; and

initializing said selected dynamic link library (DLL) by said dynamic link library loader instead of the operating system, thereby statically attaching the selected DLL.

11. The method according to claim 10 , wherein the specific dynamic link library loader is part of the application program.

12. The method according to claim 10 , wherein the references referring to said selected DLL are filled out by said specific loader instead of an operating system.

13. A computer readable, non-transitory medium on which is stored instructions that, when read by a computer, cause the computer to perform a process for protecting against reverse engineering an application program executable on a computer, said application program being created to run with at least one selected dynamic link library (DLL) containing encryption functions on said computer, the process comprising:

adding a specific dynamic link library loader to an executable application program, said specific dynamic link library loader either containing or having access to a selected DLL;

modifying the references in the application program to said DLL such that upon loading said application program and said specific dynamic link library loader into a main memory of the a computer, said DLL is initialized by said dynamic link library loader instead of by the operating system, thereby statically attaching the said DLL to the application program;

embedding the thus modified version of said DLL into the application program.

14. The computer readable, non-transitory medium of claim 13 , wherein, upon loading the application program in the main memory of the computer, a list of references maintained by the operating system in order to link said DLL to the application is replaced at least partly by a list referring to said DLL.

15. The computer readable, non-transitory medium of claim 13 , wherein, upon loading the application program, a call that references a table entry is changed so that the DLL is called directly.

16. The computer readable, non-transitory medium of claim 13 , wherein the dynamic link library loader and the DLL are placed as appendices to the application.

17. The computer readable, non-transitory medium of claim 13 , wherein the DLL and the dynamically linked library loader are stored in the application, thereby using unused space within the application to be protected.

18. The computer readable, non-transitory medium of claim 13 , wherein the process further comprises:

placing the dynamic link library loader itself as an extended dynamic link library; and

modifying the application such, that it does no longer references the DLL to be linked but instead references the dynamic link library loader.

19. The computer readable, non-transitory medium of claim 13 , wherein other shared dynamic link libraries in a process address space are provided by said loader with the correct references to said linked library.

20. A computer readable, non-transitory medium on which is stored instructions that, when read by a computer, cause the computer to perform a process for linking a selected dynamic link library (DLL) containing encryption functions to an executable application program upon starting the application running on a computer, the process comprising:

loading a specific dynamic link library loader together with said application program into the main memory of said computer, said dynamic link library loader either contains or has access to said selected DLL;

wherein said dynamic link library loader is embedded into the application program;

initializing said selected DLL by said dynamic link library loader instead of an operating system, thereby statically attaching the selected DLL.

21. The computer readable, non-transitory medium of claim 20 , wherein the DLL and the specific dynamic link library loader are stored in the application program.

22. The computer readable, non-transitory medium of claim 20 , wherein references in the application referring to said selected DLL are filled out by said specific loader instead of an operating system.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 31, 2013
From: PEER WICHMANN; ALEXANDER SCHMITT
To: WIBU-SYSTEMS AG
Reel/Frame 031517/0719 →
Priority Claims (1)
EP 11150910 · Jan 14, 2011 · regional
Continuity (1)
Related Publication 20150033354A1 · Jan 29, 2015