IP Library Granted Patent US 12,379,907
Granted Patent B2
US 12,379,907 · App. 17/997,191 · Granted Aug 5, 2025

Generating executables for target operational environments

Inventor: Christoph Graham (Spring, TX)
Assignee: Hewlett-Packard Development Company, L.P.
G06F8/41
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 12,379,907
App. No.
17/997,191
Granted
Aug 5, 2025
Kind
B2
Abstract

In some examples, a computing device can include a memory resource storing instructions to cause a processor resource to disassemble a compiled executable of a native operational environment into assembly-based instructions, map each assembly-based instruction to a corresponding module of a target operational environment, and generate an executable for the target operational environment using the mapped modules of the target operational environment.

Claims (23)

1. A computing device comprising: a processor resource including a plurality of electronic circuits; and a non-transitory memory resource storing machine-readable instructions stored thereon that, when executed, cause the processor resource to: disassemble a compiled executable of a native operational environment into assembly-based instructions, the processor resource is to generate a syntax tree from the assembly-based instructions, map, in accordance with the syntax tree, the assembly-based instructions to a corresponding module of a target operational environment that differs from the native operational environment in type or version, and generate, in response to mapping the assembly-based instructions to the corresponding module, an executable for the target operational environment.

2. The computing device of claim 1 , wherein the processor resource is to map the assembly-based instructions in response to an existence of the corresponding module in a map library.

3. The computing device of claim 2 , wherein the computing device is to generate, in an absence of the corresponding module in the map library, one or more modules that correspond to the assembly-based instruction.

4. The computing device of claim 3 , wherein the computing device is to save the one or more modules in the map library.

5. The computing device of claim 2 , wherein modules included in the map library comprise low-level virtual machine assembly instructions.

6. The computing device of claim 2 , wherein the processor resource is to:

map a dynamically linked module to a respective module in the map library.

7. The computing device of claim 6 , wherein the processor resource is to:

generate, in response to an absence of a module for a pointer in the dynamically linked module, the module for the pointer.

8. The computing device of claim 6 , wherein disassembling the dynamically linked module comprises disassembling pointers associated with the dynamically linked module.

9. The computing device of claim 2 , wherein the processor resource is to:

map each assembly-based instruction to the corresponding module by identifying functions in the syntax tree that map operational environment services.

10. The computing device of claim 2 , wherein the processor resource is to:

map each assembly-based instruction to the corresponding module by identifying functions in the syntax tree that map an application programming interface call.

11. The computing device of claim 10 , wherein the processor resource is to:

append a first module corresponding to the application programming interface call from the map library to a new syntax tree.

12. The computing device of claim 11 , wherein the processor resource is to:

append a second module corresponding to operational environment services to the new syntax tree.

13. The computing device of claim 2 , wherein the processor resource is to disassemble the compiled executable by disassembling statically linked modules included in the compiled executable.

14. The computing device of claim 13 , wherein the processor resource is to map each of the statically linked modules to a respective module included in the map library.

15. The computing device of claim 1 , wherein the compiled executable is executable by the processor resource.

16. A non-transitory memory resource storing machine-readable instructions stored thereon that, when executed, cause a processor resource to: disassemble a compiled executable of a native operational environment into assembly-based instructions, the processor resource is to generate a syntax tree from the assembly-based instructions; map, in accordance with the syntax tree, the assembly-based instructions to a corresponding module of a target operational environment that differs from the native operational environment in type or version; and generate, in response to mapping the assembly-based instructions to the corresponding module, an executable for the target operational environment.

17. A method, comprising: disassembling, by a computing device, a compiled executable of a native operational environment into assembly-based instructions, a processor resource is to generate a syntax tree from the assembly-based instructions, mapping, by the computing device in accordance with the syntax tree, the assembly-based instructions to a corresponding module of a target operational environment that differs from the native operational environment in type or version, and generating, by the computing device in response to mapping the assembly-based instructions to the corresponding module, an executable for the target operational environment.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 26, 2022
From: GRAHAM, CHRISTOPH
To: HEWLETT-PACKARD DEVELOPMENT COMPANY, L.P.
Reel/Frame 061546/0258 →
Continuity (1)
Related Publication 20230093197A1 · Mar 23, 2023
References Cited (18)
US 5577233A · Goettelmann et al. · 1996 [cited by applicant]
US 7404177B1 · Greenfield et al. · 2008 [cited by applicant]
US 8407675B1 · Clark · 2013 [cited by applicant]
US 9690577B1 · Crew et al. · 2017 [cited by applicant]
US 10656940B1 · Hogan · 2020 [cited by examiner]
US 11847433B2 · Matousek · 2023 [cited by examiner]
US 20020019884A1 · Gungabeesoon · 2002 [cited by applicant]
US 20020178290A1 · Coulthard et al. · 2002 [cited by applicant]
US 20040068716A1 · Stevens · 2004 [cited by examiner]
US 20060230070A1 · Colton · 2006 [cited by examiner]
US 20130326513A1 · Shlomai et al. · 2013 [cited by applicant]
US 20150277879A1 · Gschwind et al. · 2015 [cited by applicant]
CN 1189817C · 2005 [cited by applicant]
Wang et al.; “Reassembleable Disassembling”; 24th USENIX Security Symposium (USENIX Security 15); 2015 (Year: 2015). [cited by examiner]
Marco Selvatici; “Webassembly Tutorial”; Github.io website [full URL included in ref.]; 2018 (Year: 2018). [cited by examiner]
“Reverse Engineering WebAssembly”; PNF Software blog page at Medium.com [full URL listed in ref.]; 2018 (Year: 2018). [cited by examiner]
Kosta Hristov; “Disassembling, Decompiling and Modifying Executables”; Developing the Future (.net) website [Full URL included in ref.]; 2013 (Year: 2013). [cited by examiner]
Wang, et al.; “Reassembleable Disassembling”; Proceedings of the 24th USENIX Security Symposium Aug. 12-14, 2015, Washington, D.C. (Year: 2015) Note: Previous copy was provided from author's website, current copy from c… [cited by examiner]