Automated Binary Reverse Engineering via Taint Modeling

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Current methods for reverse engineering binary applications to detect hidden malicious code are inefficient due to the complexity of low-level languages like assembly and machine code, leading to time-consuming processes and a persistent disadvantage in the cyber security industry.

Innovation Solution

A method and system that translate native machine code into an intermediate language (PREIL) and use a Taint Modeling Function (TMF) to transform and aggregate instructions, enabling automated reasoning and pattern recognition to identify undesirable coding patterns and find software bugs without source code.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If automated analysis tools are used to detect bugs in binary applications, then productivity is improved, but the complexity of the analysis system increases due to the need to handle low-level assembly and machine code

Engineering Contradiction:
Improvebug detection speedVSAvoidanalysis system complexity
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The patent introduces an intermediate representation (IR) as a mediator between the binary application and the analysis engine. The IR translates complex low-level machine code into a simplified, platform-independent format that preserves semantic information while eliminating syntactic complexity, enabling automated analysis without requiring the system to directly parse assembly instructions

Inventive Principle:
Principle #24Intermediary (Mediator)

Solution Approach 2:

The patent replaces manual mechanical inspection of binary code with automated symbolic execution and static analysis algorithms. The analysis engine automatically traverses control flow graphs, evaluates path conditions, and detects vulnerabilities without human intervention, substituting the mechanical process of manual reverse engineering with computational automation

Inventive Principle:
Principle #28Mechanics substitution (Replace mechanical system)

2Measurement precision

If comprehensive test suites are designed to detect bugs, then measurement precision is improved, but the time required for testing increases significantly

Engineering Contradiction:
Improvebug detection accuracyVSAvoidtesting time
Core Design Contradiction:
Measurement precisionVSLoss of time

Solution Approach 1:

The patent performs preliminary static analysis and control flow graph construction before actual bug detection. By pre-computing the program's control flow structure, data dependencies, and potential execution paths, the system prepares the analysis framework in advance, enabling faster and more accurate bug detection during the actual scanning phase without requiring comprehensive runtime testing

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The patent uses symbolic execution to explore only the most critical execution paths that are likely to contain vulnerabilities, rather than exhaustively testing all possible paths. The analysis engine focuses on paths with high risk indicators such as user input handling, memory operations, and privilege transitions, achieving sufficient detection accuracy without the time cost of complete path enumeration

Inventive Principle:
Principle #16Partial or excessive action

3Measurement precision

If human inspection of source code is performed to detect bugs, then measurement precision is improved, but productivity decreases due to the manual nature of the process

Engineering Contradiction:
Improvebug detection accuracyVSAvoidanalysis speed
Core Design Contradiction:
Measurement precisionVSProductivity

Solution Approach 1:

The patent enables the analysis system to perform self-service by automatically generating and evaluating test cases, computing path conditions, and identifying vulnerabilities without human assistance. The symbolic execution engine autonomously explores execution paths, solves constraints, and reports bugs, making the system self-sufficient while maintaining high detection accuracy that was previously only achievable through expert human analysis

Inventive Principle:
Principle #25Self-service

4Ease of operation

If static analysis is performed on binary applications without source code, then ease of operation is improved, but measurement precision decreases due to lack of semantic information

Engineering Contradiction:
Improveanalysis accessibilityVSAvoidsemantic understanding accuracy
Core Design Contradiction:
Ease of operationVSMeasurement precision

Solution Approach 1:

The patent transforms the analysis parameters by translating binary instructions into an intermediate representation that preserves semantic meaning. The IR maintains information about variable dependencies, control flow conditions, and data transformations, allowing static analysis to achieve precision comparable to source code analysis while operating directly on compiled binaries without requiring access to original source code

Inventive Principle:
Principle #35Parameter changes

Data Source

PatentUS10354069B2Automated reverse engineering
Publication Date: 2019.07.16 BAE SYSTEMS INFORMATION ANDELECTRONIC SYSTEMS INTEGRATION INC
  • US10354069B2 patent drawing
  • US10354069B2 patent drawing
  • US10354069B2 patent drawing

AI summary

A Taint Modeling Function (TMF) finds abstract patterns and uses them to automate the malware detection process. TMF involves the process of statically analyzing a sequence of assembly language instructions and abstracting complex relationships among instruction inputs and outputs into a mathematical function containing a set of algebraic expressions. The set of expressions support fully automating semantic pattern detection in binary code. It deterministically generates outputs given inputs determining code block outputs, for given inputs, without executing the code. It detects code patterns automatically to spot bad coding patterns directly from the binary used to detect bugs statically in the entire application space.