IP Library Granted Patent US 7,664,967
Granted Patent B2
US 7,664,967 · App. 10/905,263 · Granted Feb 16, 2010

Development system with methodology providing information hiding in executable programs

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,664,967
App. No.
10/905,263
Granted
Feb 16, 2010
Kind
B2
Abstract

A development system providing a method for information hiding in executable programs is described. In one embodiment, for example, a method of the present invention is described for hiding information in computer programs, the method comprises steps of: receiving first input comprising program modules for a computer program being created, the program modules including data and code; receiving second input comprising information to be hidden in the computer program; linking together the program modules to form an executable computer program, including determining pads necessary for aligning data and code; and hiding the second input in the executable computer program by storing portions of the second input at locations in the executable computer program intended for pads.

Claims (54)

1. A method for hiding information in computer programs, the method comprising:

receiving first input comprising program modules for a computer program being created, said program modules including data and code;

receiving second input comprising information to be hidden in the computer program;

linking together the program modules to form an executable computer program, including determining pads necessary for aligning data and code;

hiding the second input in the executable computer program by storing portions of the second input at locations in the executable computer program intended for pads, wherein said second input is hidden in a redundant manner in the executable computer program, so that said second input may still be reconstituted when portions of the executable computer program have been modified, removed, or obliterated;

linking in additional modules comprising resource and debug info; and

hiding portions of the second input within said additional modules.

2. The method of claim 1 , wherein said program modules comprise object code modules that are to be linked together to form an executable computer program.

3. The method of claim 1 , wherein said second input comprises a data stream to be embedded in the computer program.

4. The method of claim 3 , wherein said data stream is encrypted before being hidden in the computer program.

5. The method of claim 4 , wherein said data stream is encrypted using asymmetric encryption technique.

6. The method of claim 4 , wherein said data stream is encrypted using symmetric encryption technique.

7. The method of claim 3 , wherein said data stream is compressed before being hidden in the computer program.

8. The method of claim 1 , wherein said second input comprises customer licensing information.

9. The method of claim 8 , wherein said customer licensing information is hidden in the computer program after receiving an online purchase request for the computer program.

10. The method of claim 1 , further comprising:

during the linking step, recording each pad's location and size in the executable computer program.

11. The method of claim 10 , further comprising:

from pad locations and sizes, creating a mask indicating where in the executable computer program said second input is hidden.

12. The method of claim 11 , further comprising:

using the mask, extracting portions of the second input stored among the pads; and

recombining the portions together to reconstitute the second input.

13. The method of claim 11 , wherein the hiding step includes:

using the mask, modifying the executable computer program after the linking step to replace various ones of the pads with portions of the second input.

14. The method of claim 11 , wherein the hiding step includes:

during the linking step, replacing various ones of the pads that were to be emitted with portions of the second input.

15. The method of claim 1 , wherein data and code alignment are required for execution of the computer program on a given processor architecture.

16. The method of claim 1 , wherein data and code alignment are required for efficient memory fetching during program operation.

17. The method of claim 1 , wherein said pads comprise non-executable, non-data filler bytes.

18. A system for hiding information in computer programs, the system comprising:

first input comprising program modules for a computer program being created, said program modules including data and code;

second input comprising information to be hidden in the computer program;

a linker for linking together the program modules to form an executable computer program, including determining pads necessary for aligning data and code;

a module for hiding the second input in the executable computer program by storing portions of the second input at locations in the executable computer program intended for pads, wherein said second input is hidden in a redundant manner in the executable computer program, so that said second input may still be reconstituted when portions of the executable computer program have been hacked;

a module for linking in additional modules comprising resource and debug info; and

a module for hiding portions of the second input within said additional modules.

19. The system of claim 18 , wherein said program modules comprise object code modules that are to be linked together to form an executable computer program.

20. The system of claim 18 , wherein said second input comprises a data stream to be embedded in the computer program.

21. The system of claim 20 , wherein said data stream is encrypted before being hidden, in the computer program.

22. The system of claim 21 , wherein said data stream is encrypted using asymmetric encryption technique.

23. The system of claim 21 , wherein said data stream is encrypted using symmetric encryption technique.

24. The system of claim 20 , wherein said data stream is compressed before being hidden in the computer program.

25. The system of claim 18 , wherein said second input comprises customer licensing information.

26. The system of claim 25 , wherein said customer licensing information is hidden in the computer program after receiving an online purchase request for the computer program.

27. The system of claim 18 , wherein the linker records each pad's location and size in the executable computer program.

28. The system of claim 27 , wherein the linker records a mask indicating where in the executable computer program said second input is hidden.

29. The system of claim 28 , further comprising:

a module for extracting portions of the second input stored among the pads using the mask, and recombining the portions together to reconstitute the second input.

30. The system of claim 28 , further comprising:

a module for modifying the executable computer program after linking to replace various ones of the pads with portions of the second input.

31. The system of claim 28 , wherein the linker replaces various ones of the pads that were to be emitted with portions of the second input.

32. The system of claim 18 , wherein data and code alignment are required for execution of the computer program on a given processor architecture.

33. The system of claim 18 , wherein data and code alignment are required for efficient memory fetching during program operation.

34. The system of claim 18 , wherein said pads comprise non-executable, non-data filler bytes.

Assignments (6)
RELEASE OF SECURITY INTEREST REEL/FRAME 035656/0251 Recorded Feb 2, 2023
From: JPMORGAN CHASE BANK, N.A.
To: BORLAND SOFTWARE CORPORATION; ATTACHMATE CORPORATION; NETIQ CORPORATION; MICRO FOCUS (US), INC.; MICRO FOCUS SOFTWARE INC. (F/K/A NOVELL, INC.)
Reel/Frame 062623/0009 →
RELEASE OF SECURITY INTEREST REEL/FRAME 044183/0718 Recorded Feb 2, 2023
From: JPMORGAN CHASE BANK, N.A.
To: MICRO FOCUS LLC (F/K/A ENTIT SOFTWARE LLC); BORLAND SOFTWARE CORPORATION; MICRO FOCUS (US), INC.; SERENA SOFTWARE, INC; ATTACHMATE CORPORATION; MICRO FOCUS SOFTWARE INC. (F/K/A NOVELL, INC.); NETIQ CORPORATION
Reel/Frame 062746/0399 →
CORRECTIVE ASSIGNMENT TO CORRECT THE TO CORRECT TYPO IN APPLICATION NUMBER 10708121 WHICH SHOULD BE 10708021 PREVIOUSLY RECORDED ON REEL 042388 FRAME 0386. ASSIGNOR(S) HEREBY CONFIRMS THE NOTICE OF SUCCESSION OF AGENCY. Recorded Jul 26, 2018
From: BANK OF AMERICA, N.A., AS PRIOR AGENT
To: JPMORGAN CHASE BANK, N.A., AS SUCCESSOR AGENT
Reel/Frame 048793/0832 →
SECURITY INTEREST Recorded Oct 11, 2017
From: ATTACHMATE CORPORATION; BORLAND SOFTWARE CORPORATION; NETIQ CORPORATION; MICRO FOCUS (US), INC.; MICRO FOCUS SOFTWARE, INC.; ENTIT SOFTWARE LLC; ARCSIGHT, LLC; SERENA SOFTWARE, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 044183/0718 →
NOTICE OF SUCCESSION OF AGENCY Recorded May 2, 2017
From: BANK OF AMERICA, N.A., AS PRIOR AGENT
To: JPMORGAN CHASE BANK, N.A., AS SUCCESSOR AGENT
Reel/Frame 042388/0386 →
SECURITY INTEREST Recorded May 13, 2015
From: MICRO FOCUS (US), INC.; BORLAND SOFTWARE CORPORATION; ATTACHMATE CORPORATION; NETIQ CORPORATION; NOVELL, INC.
To: BANK OF AMERICA, N.A.
Reel/Frame 035656/0251 →