Binary Decompilation for Program Component Identification

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing methods for analyzing computer programs are inefficient when dealing with precompiled third-party components, as they lack complete knowledge of the source code and struggle to analyze binary code effectively.

Innovation Solution

A method involving decompiling binary code into intermediate representation code, generating strings from this code, and using string kernel search to identify program components from a reference database, even in the presence of obfuscation techniques.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Loss of information

If source code analysis methods are used, then complete knowledge of program components is achieved, but inability to analyze precompiled third-party components occurs

Engineering Contradiction:
Improveknowledge of program componentsVSAvoidability to analyze precompiled components
Core Design Contradiction:
Loss of informationVSAdaptability or versatility

Solution Approach 1:

Instead of analyzing source code to understand program components, the patent inverts the approach by decompiling binary code back into intermediate representation that resembles source code structure. This allows analysis of precompiled third-party components by transforming the binary into a readable intermediate form that can be processed by existing analysis tools.

Inventive Principle:
Principle #13The other way round (Inversion)

Solution Approach 2:

The patent introduces an intermediary intermediate representation layer between binary code and source code analysis. This intermediate representation serves as a mediator that preserves the structural information of program components while being derivable from binary code, enabling analysis without requiring original source code.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Adaptability or versatility

If binary code analysis is performed, then precompiled components can be analyzed, but code similarities are lost due to obfuscation and compiler changes

Engineering Contradiction:
Improveability to analyze binary codeVSAvoidcode similarities
Core Design Contradiction:
Adaptability or versatilityVSLoss of information

Solution Approach 1:

The patent applies preliminary decompilation action before analysis to transform the binary code into intermediate representation. This preliminary transformation restores the structural information and code similarities that were lost during compilation, enabling accurate identification of program components even when obfuscation or compiler changes are present.

Inventive Principle:
Principle #10Preliminary action

3Loss of information

If decompilation to intermediate representation is performed, then code structure is restored, but processing time increases

Engineering Contradiction:
Improvecode structure informationVSAvoidanalysis processing time
Core Design Contradiction:
Loss of informationVSLoss of time

Solution Approach 1:

The patent segments the decompilation and analysis process into distinct phases: first decompiling the binary code into intermediate representation, then performing analysis operations on this intermediate form. This segmentation allows optimization of each phase independently and enables parallel processing of different code segments, reducing overall processing time while preserving code structure information.

Inventive Principle:
Principle #1Segmentation

Data Source

PatentUS20250077201A1Method for automatically analyzing a computer program
Publication Date: 2025.03.06 ROBERT BOSCH GMBH
  • US20250077201A1 patent drawing
  • US20250077201A1 patent drawing
  • US20250077201A1 patent drawing

AI summary

A method for automatically analyzing a computer program. The method includes generating intermediate representation code including a sequence of intermediate representation instructions by decompiling binary code of the computer program, generating one or more intermediate representation code strings from the sequence of intermediate representation instructions, searching for reference intermediate representation code strings of a plurality of reference intermediate representation code strings in the one or more intermediate representation code strings by means of a string kernel search, wherein each reference intermediate representation code string belongs to a program component, and ascertaining the program components to which the reference intermediate representation code strings found in the one or more intermediate representation code strings by means of the string kernel comparison belong as the program components present in the computer program.