IP Library Granted Patent US 10,394,554
Granted Patent B1
US 10,394,554 · App. 15/699,716 · Granted Aug 27, 2019

Source code extraction via monitoring processing of obfuscated byte code

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,394,554
App. No.
15/699,716
Granted
Aug 27, 2019
Kind
B1
Abstract

In embodiments, methods and systems for implementing source code extraction are provided. Source code extraction facilitates processing obfuscated byte code and extracting source code representations of original source code of applications. Source code extraction is implemented based on leveraging and monitoring an interpreter (e.g., a software interpreter running on a virtual machine) when portions of obfuscated byte code (i.e., obfuscated compiled version of source code) are loaded or executed using the interpreter. In operation, the obfuscated byte code is accessed at the interpreter. The interpreter, processing the obfuscated byte code, is monitored using a source code extraction manager that supports instrumentation instances associated with functions of the obfuscated byte code. Instruction sequences of functions that the interpreter is processing are recorded using the source code extraction manager. Source code representations are generated based on the instruction sequences that are recorded while monitoring the functions that are processed by the interpreter.

Claims (36)

1. A system for implementing source code extraction, the system comprising:

a memory; and

a processor coupled with the memory to:

access obfuscated byte code by an interpreter,

process the obfuscated byte code, wherein the obfuscated byte code is an instruction set compiled from original source code, and wherein the instruction set is executable by the interpreter based on parsing and directly executing instruction from the instruction set one at a time,

monitor processing of the obfuscated byte code by the interpreter using instrumentation instances associated with functions of the obfuscated byte code,

record instruction sequences of functions based on the monitored processing of the obfuscated byte code by the interpreter, and

generate source code representations of the original source code based on the recorded instruction sequences of functions.

2. The system of claim 1 , wherein processing the obfuscated byte code further comprises loading the obfuscated byte code or executing the obfuscated byte code.

3. The system of claim 1 , wherein one of the instrumentation instances is programmed to monitor a corresponding function based on the interpreter directly accessing the function in the obfuscated byte code.

4. The system of claim 1 , wherein one of the monitored functions is a callable unit in the obfuscated byte code that is associated with one of the instrumentation instances, wherein when the one of the monitored functions is accessed using interpreter, the one of the instrumentation instances traces instruction sequences associated with the one of the monitored functions.

5. The system of claim 1 , wherein monitor processing of the obfuscated byte code by the interpreter further comprises detecting the interpreter accessing a function to identify the instruction sequences for the function that is accessed.

6. The system of claim 5 , wherein recording the instructions sequences for functions includes identifying a semantic structure and behavior associated with the corresponding function from the original source code.

7. The system of claim 1 , further comprising the processor configured to:

decompile the recorded instruction sequences of functions; and

generate decompiled representations of instruction sequences.

8. A computer-implemented method for implementing source code extraction, the method comprising:

accessing obfuscated byte code processed by an interpreter, wherein the obfuscated byte code is an instruction set compiled from original source code, and wherein the instruction set is executable using the interpreter based on parsing and directly executing instructions from the instruction set one at a time;

monitoring processing of the obfuscated byte code by the interpreter using instrumentation instances associated with functions of the obfuscated byte code;

recording instruction sequences of functions based on the monitored processing of the obfuscated byte code by the interpreter; and

generating source code representations of the original source code based on the recorded instruction sequences of functions.

9. The method of claim 8 , wherein the interpreter is a software interpreter running in reverse engineering mode on a virtual machine, where the software interpreter processes source code that is compiled into byte code and then obfuscated into the obfuscated byte code.

10. The method of claim 8 , wherein one of the instrumentation instances is programmed to monitor a corresponding function based on the interpreter directly accessing the function in the obfuscated byte code.

11. The method of claim 8 , wherein one of the monitored functions is a callable unit in the obfuscated byte code that is associated with one of the instrumentation instances, wherein when the one of the monitored functions is accessed using interpreter, the one of the instrumentation instances traces instruction sequences associated with the one of the monitored functions.

12. The method of claim 8 , wherein monitor processing of the obfuscated byte code by the interpreter further comprises detecting the interpreter accessing a function to identify the instruction sequences for the function that is accessed.

13. The method of claim 8 , wherein recording instructions sequences for a function further includes identifying a semantic structure and behavior associated with the corresponding function from the original source code.

14. The method of claim 8 , further comprising receiving the source code representation by a decompiler, and translating by the decompiler the instruction sequences of the source code representation into a decompiled representation.

15. One or more computer storage media having computer-executable instructions embodied thereon that, when executed by one or more processors, causes the one or more processors to perform a method for implementing source code extraction, the method comprising:

accessing obfuscated byte code by an interpreter, wherein the obfuscated byte code is an instruction set compiled from original source code, and wherein the instruction set is executable using the interpreter based on parsing and directly executing instructions from the instruction set one at a time;

monitoring processing of the obfuscated byte code by the interpreter, the source code extraction manager supports instrumentation instances associated with functions of the obfuscated byte code;

recording instruction sequences of functions based on the monitored processing of the obfuscated byte code by the interpreter; and

decompiling the recorded instruction sequences of functions to generate decompiled representations of instruction sequences of the original source code.

16. The method of claim 15 , wherein one of the monitored functions is a callable unit in the obfuscated byte code that is associated with one of the instrumentation instances, wherein when the one of the monitored functions is accessed using interpreter, the one of the instrumentation instances traces instruction sequences associated with the one of the monitored functions.

17. The method of claim 15 , wherein monitor processing of the obfuscated byte code by the interpreter further comprises detecting the interpreter accessing a function to identify the instruction sequences for the function that is accessed.

18. The method of claim 15 , wherein recording instructions sequences for a function further includes identifying a semantic structure and behavior associated with the corresponding function from the original source code.

19. The method of claim 15 , wherein the interpreter is a software interpreter running in reverse engineering mode on a virtual machine, where the software interpreter processes source code that is compiled into byte code and then obfuscated into the obfuscated byte code.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 11, 2019
From: HEALEY, RICHARD
To: STRIPE, INC.
Reel/Frame 049728/0796 →