IP Library Granted Patent US 10,747,518
Granted Patent B2
US 10,747,518 · App. 16/418,311 · Granted Aug 18, 2020

Method and system for modifying machine instructions within compiled software

Inventors: Chris Hughes (Sacramento, CA); Luke Mitchell (Sacramento, CA); Adam Schroeder (Sacramento, CA)
Assignee: ENHANCE, INC.
G06F8/52G06F8/53G06F8/61
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,747,518
App. No.
16/418,311
Granted
Aug 18, 2020
Kind
B2
Abstract

A system and method for modifying a compiled software application to implement additional software code to enhance the functionality of a software application. The system and method comprises receiving a software application binary 601 , metadata 602 , and modification options 603 , analyzing the received components, modifying the software application binary based on the analysis, and returning the modified software application binary 610.

Claims (26)

1. A method of modifying software, comprising:

at a computing device:

(a) receiving a software application binary and existing metadata of the software application binary, the software application binary comprising binary instructions, one or more modification choices of a user, and binary code associated with the one or more modification choices; wherein the one or more modification choices comprise: inserting the binary code associated with the one or more modification choices into the software application binary, removing one or more binary instructions from the software application binary, and disabling one or more binary instructions in the software application binary; wherein the one or more modification choices comprise addition, removal, disabling, and modification of one or more instruction types selected from the group consisting of: software development kits, libraries, code snippets, text, and application programming interfaces;

(b) analyzing the software application binary and existing metadata of the software application binary to determine whether one or more modifications to said binary instructions are required;

(c) analyzing the software application binary and the one or more modification choices to determine whether modifications to assembly instructions are required, wherein if modifications to the assembly instructions are required, then disassembling binary instructions into assembly instructions and modifying the assembly instructions in accordance with said one or more modification choices of the user;

(d) analyzing the software application binary and the one or more modification options to determine whether modifications to source code are required, wherein if modifications to source code are required, then decompiling the assembly instructions into source code instructions and modifying the source code instructions in accordance with said one or more modification choices of the user;

(e) if the modifications to the binary instructions are required, automatically modifying the binary instructions in accordance with the one or more modification choices; wherein modifying the binary instructions comprises inserting the binary code associated with the one or more modification choices into the software application binary, removing one or more binary instructions from the software application binary, or disabling one or more binary instructions in the software application binary;

(f) removing existing metadata and injecting new metadata into the software application binary, whereby a modified software application binary is generated; and

(g) returning the modified software application binary.

2. The method of modifying software of claim 1 , further comprising signing the modified software application binary using digital keys before returning the modified software application binary.

3. The method of modifying software of claim 2 , wherein receiving the software application binary is chosen from the group consisting of receiving the application binary from a user uploading the application binary or downloading the application binary from an online application marketplace.

4. The method of modifying software of claim 3 , wherein returning the software application binary is chosen from the group consisting of providing the software application binary for download, providing access to the software application for debugging and service improvements, and publishing the application binary to the online application marketplace.

5. The method of modifying software of claim 1 , wherein the new metadata comprises information specifying SDK settings and version number of the software application binary.

6. The method of modifying software of claim 1 , wherein the new metadata comprises information specifying a target operating platform or a computer device compatibility of the software application binary.

7. A non-transitory computer-readable storage medium having stored therein instructions, which when executed by a computing device, cause the computing device to:

(a) receive a software application binary and existing metadata of the software application binary, the software application binary comprising binary instructions, one or more modification choices, and binary code associated with the one or more modification choices; wherein the one or more modification choices comprise: inserting the binary code associated with the one or more modification choices into the software application binary, removing one or more binary instructions from the software application binary, and disabling one or more binary instructions in the software application binary; wherein the one or more modification choices comprise addition, removal, disabling, and modification of one or more instruction types selected from the group consisting of: software development kits, libraries, code snippets, text, and application programming interfaces;

(b) analyze the software application binary and existing metadata of the software application binary to determine whether modifications to said binary instructions are required;

(c) analyze the software application binary and the one or more modification choices to determine if modifications to assembly instructions are required, wherein if the modifications to the assembly instructions are required, then disassemble the application binary instructions into assembly instructions and modify the assembly instructions;

(d) analyze the software application binary and the one or more modification choices to determine if modifications to source code are required, wherein if the modifications to the source code are required, then decompile the assembly instructions into source code instructions and modify the source code instructions;

(e) if the modifications to the binary instructions are required, automatically modify the binary instructions in accordance with the one or more modification choices; wherein modification of the binary instructions comprises inserting the binary code associated with the one or more modification choices into the binary instructions, removing one or more binary instructions from the software application binary, or disabling one or more binary instructions in the software application binary;

(f) remove existing metadata and inject new metadata into the software application binary, whereby a modified software application binary is generated; and

(g) return the modified software application binary.

8. The non-transitory computer-readable storage medium of claim 7 , further comprising instructions to sign the modified software application binary using digital keys.

9. The non-transitory computer-readable storage medium of claim 8 , further comprising a user interface, wherein the user interface provides a plurality of modification options for a user to select the one or more modification choices.

10. The non-transitory computer-readable storage medium of claim 7 , wherein the new metadata comprises information specifying SDK settings and version number of the software application binary.

11. The non-transitory computer-readable storage medium of claim 7 , wherein the new metadata comprises information specifying a target operating platform or a computer device compatibility of the software application binary.

Assignments (7)
RELEASE OF SECURITY INTEREST Recorded Jul 3, 2024
From: HERITAGE BANK OF COMMERCE
To: MOBILEFUSE LLC
Reel/Frame 067908/0775 →
SECURITY INTEREST Recorded Aug 6, 2021
From: MOBILEFUSE LLC
To: HERITAGE BANK OF COMMERCE
Reel/Frame 057101/0301 →
SECURITY INTEREST Recorded Aug 6, 2021
From: MOBILEFUSE LLC
To: HERITAGE BANK OF COMMERCE
Reel/Frame 057103/0654 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 24, 2021
From: ENHANCE, INC.
To: MOBILEFUSE LLC
Reel/Frame 056660/0083 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 14, 2021
From: ENHANCE, INC.
To: MOBILEFUSE LLC
Reel/Frame 056532/0777 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 21, 2019
From: LUCRATIVE GAMING, INC.
To: ENHANCE, INC.
Reel/Frame 049243/0902 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 21, 2019
From: HUGHES, CHRIS; SCHROEDER, ADAM; MITCHELL, LUKE
To: LUCRATIVE GAMING, INC.
Reel/Frame 049243/0293 →
Continuity (3)
Continuation 15743896
Provisional Application 62194180 · Jul 17, 2015
Related Publication 20190272161A1 · Sep 5, 2019