Binary Disassembly via Recursive Address Validation

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Disassembling executable binaries into human-readable assembly language instructions is challenging due to the lack of symbolic constants and comments, leading to ambiguous and difficult-to-interpret output, as existing disassemblers struggle to accurately translate machine language into assembly language source code.

Innovation Solution

A disassembler uses a recursive traversal algorithm to identify and validate potential address references, generating assembler source code instructions, and employs a linear sweeping algorithm to disassemble remaining code sections, ensuring accurate and interpretable output by retaining or discarding instructions based on confidence codes and structural validation.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Loss of information

If a traditional disassembler translates machine language into assembly language source code instructions, then the binary is converted into human-readable format, but the output lacks symbolic constants and comments making it difficult to interpret

Engineering Contradiction:
Improveloss of symbolic constants and commentsVSAvoidinterpretability of disassembled output
Core Design Contradiction:
Loss of informationVSEase of operation

Solution Approach 1:

The disassembler performs preliminary actions by identifying potential address references and validating them before generating the final disassembled output. This preliminary validation process allows the system to reconstruct symbolic information and comments that would otherwise be lost, improving the interpretability of the output without requiring the original source code.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The system uses feedback mechanisms by validating potential address references and using the results to improve subsequent disassembly operations. The validation process provides feedback about the reliability of identified address references, allowing the disassembler to adjust its interpretation and reconstruct symbolic constants and comments more accurately.

Inventive Principle:
Principle #23Feedback

2Measurement precision

If multiple potential address references are identified and validated, then the accuracy of disassembled instructions is improved, but the complexity of the disassembly process increases

Engineering Contradiction:
Improveaccuracy of address reference identificationVSAvoidcomplexity of disassembly algorithm
Core Design Contradiction:
Measurement precisionVSDevice complexity

Solution Approach 1:

The disassembly process is segmented into distinct phases: identifying potential address references, validating those references, and then generating disassembled instructions based on validated references. This segmentation allows the system to manage the complexity of handling multiple potential address references by breaking down the problem into manageable, sequential steps.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The disassembler dynamically adjusts its behavior based on the validation results of potential address references. Rather than following a fixed, static process, the system adapts its disassembly approach based on the confidence level and validity of identified address references, allowing it to handle complex scenarios flexibly while maintaining accuracy.

Inventive Principle:
Principle #15Dynamics

3Reliability

If the binary is disassembled at multiple sequential addresses starting at each potential address reference, then complete code coverage is achieved, but the time required for disassembly increases

Engineering Contradiction:
Improvecompleteness of code disassemblyVSAvoiddisassembly processing time
Core Design Contradiction:
ReliabilityVSLoss of time

Solution Approach 1:

The system performs preliminary validation of potential address references before committing to full disassembly at each address. This preliminary action filters out invalid or redundant address references, allowing the disassembler to focus processing time on promising candidates and achieve complete code coverage more efficiently.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The disassembler employs a strategy of performing partial disassembly operations on potential address references, validating them incrementally rather than committing to full disassembly of all possible addresses. This approach achieves complete code coverage by being thorough where needed while avoiding unnecessary processing of invalid references, balancing completeness with efficiency.

Inventive Principle:
Principle #16Partial or excessive action

Data Source

PatentUS8869109B2Disassembling an executable binary
Publication Date: 2014.10.21 ZHIGU HLDG
  • US8869109B2 patent drawing
  • US8869109B2 patent drawing
  • US8869109B2 patent drawing

AI summary

A method for disassembling an executable binary (binary). In one implementation, a plurality of potential address references may be identified based on the binary and a plurality of storage addresses containing the binary. A plurality of assembler source code instructions (instructions) may be generated by disassembling the binary. The binary may be disassembled at one or more sequential addresses starting at each of the plurality of potential address references.