IP Library Granted Patent US 10,872,146
Granted Patent B2
US 10,872,146 · App. 16/670,701 · Granted Dec 22, 2020

Software integrity checking systems and methods

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 10,872,146
App. No.
16/670,701
Granted
Dec 22, 2020
Kind
B2
Abstract

This disclosure relates to systems and methods generating and distributing protected software applications. In certain embodiments, integrity checking mechanisms may be implemented using integrity checking code in software code prior to compilation into machine code. Following compilation and execution of the application, the introduced code may check the integrity of the application by determining whether the application behaves and/or otherwise functions as expected. By introducing integrity checking in this manner, integrity checking techniques may be injected into the application prior to compilation into machine code and/or independent of the particular manner in which the application is compiled.

Claims (26)

1. A method for protecting an application performed by a system comprising a processor and a non-transitory computer-readable medium storing instructions that, when executed by the processor, cause the system to perform the method, the method comprising:

generating functional integrity checking code, the functional integrity checking code being configured to execute one or more functional integrity checks of the application to verify that at least a portion of the application associated with the one or more functional integrity checks function according to a defined behavior by verifying that at least one input and at least one output associated with the at least a portion of the application correspond with an expected input and output behavior;

inserting the functional integrity checking code into code associated with the application;

inserting integrity check value generation code into the code associated with the application;

inserting integrity checking code configured to verify the integrity of the application into the code associated with the application; and

compiling the code associated with the application including the inserted functionality integrity checking code, the inserted integrity check value generation code, and the inserted integrity checking code,

wherein the functional integrity checking code is further configured to initiate the integrity check value generation code upon successful verification that the at least one input and the at least one output associated with the at least a portion of the application correspond with the expected input and output behavior.

2. The method of claim 1 , wherein the one or more functional integrity checks are configured to execute in response to an initial execution of the application.

3. The method of claim 1 , wherein the one or more functional integrity checks are configured to execute in response to an installation of the application.

4. The method of claim 1 , wherein inserting the functional integrity checking code into the code associated with the application comprises appending the functional integrity checking code into the code associated with the application.

5. The method of claim 1 , wherein inserting the functional integrity checking code into the code associated with the application comprises injecting the functional integrity checking code into a plurality of locations in the code associated with the application.

6. The method of claim 1 , wherein the functional integrity checking code is at least in part obfuscated.

7. The method of claim 1 , wherein the integrity check value generation code is at least in part obfuscated.

8. The method of claim 1 , wherein the integrity checking code is at least in part obfuscated.

9. The method of claim 1 , wherein the integrity check value generation code is configured to generate one or more first integrity check values based on one or more portions of the application.

10. The method of claim 9 , wherein the integrity check value generation code is further configured to store the one or more first integrity check values in a secure storage space of a user device executing the application.

11. The method of claim 9 , wherein the integrity check value generation code is further configured to insert the one or more first integrity check values in one or more locations of the application.

12. The method of claim 9 , wherein the integrity check value generation code is configured to generate the one or more first integrity check values by performing an operation on at least one portion of the one or more portions of the application.

13. The method of claim 12 , wherein the operation comprises a hashing operation and the one or more first integrity check values comprise one or more hash values.

14. The method of claim 9 , wherein the integrity checking code is configured to execute in response to an execution of the application following installation of the application on a user device.

15. The method of claim 14 , wherein the integrity checking code is configured to perform one or more comparison integrity checks.

16. The method of claim 15 , wherein the one or more comparison integrity checks comprise generating one or more second integrity check values based on the one or more portions of the application.

17. The method of claim 16 , wherein the one or more comparison integrity checks further comprise determining that the one or more second integrity check values match corresponding values of the one or more first integrity check values.

18. The method of claim 17 , wherein the integrity checking code is configured to allow the execution of the application based one determining that the one or more second integrity check values match corresponding values of the one or more first integrity check values.

19. The method of claim 1 , wherein the code associated with the application comprises an intermediate representation of the application.

20. The method of claim 1 , wherein compiling the code associated with the application including the inserted functionality integrity checking code, the inserted integrity check value generation code, and the inserted integrity checking code comprises transmitting the code associated with the application including the inserted functionality integrity checking code, the inserted integrity check value generation code, and the inserted integrity checking code to an application store system for compilation by the application store system.

Assignments (4)
PATENT ASSIGNMENT Recorded May 27, 2025
From: INTERTRUST TECHNOLOGIES CORPORATION
To: INNOVATION TECHNOLOGIES PARTNERS LP
Reel/Frame 071408/0320 →
RELEASE OF SECURITY INTEREST Recorded Feb 14, 2023
From: ORIGIN FUTURE ENERGY PTY LTD.
To: INTERTRUST TECHNOLOGIES CORPORATION
Reel/Frame 062747/0742 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 9, 2020
From: CAKLOVIC, MARKO
To: INTERTRUST TECHNOLOGIES CORPORATION
Reel/Frame 054592/0980 →
SECURITY INTEREST Recorded Aug 9, 2020
From: INTERTRUST TECHNOLOGIES CORPORATION
To: ORIGIN FUTURE ENERGY PTY LTD
Reel/Frame 053439/0574 →