Binary Program Input Validation via Memory Address Instrumentation

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Current methods for determining valid input sequences for unknown binary programs are inefficient, often relying on random input generation, requiring source code or documentation, and are not platform-independent, leading to incomplete coverage and scalability issues.

Innovation Solution

A method that involves obtaining an input sequence for an unknown binary program, instrumenting it, executing it to record memory addresses, and determining validity based on memory address ranges, allowing for high coverage without source code or documentation and across different platforms.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Ease of manufacture

If random input generation is used for testing binary programs, then implementation simplicity is improved, but testing coverage and effectiveness deteriorate

Engineering Contradiction:
Improveimplementation simplicityVSAvoidtesting coverage
Core Design Contradiction:
Ease of manufactureVSReliability

Solution Approach 1:

The patent replaces random input generation with a systematic approach based on memory address analysis. Instead of mechanically generating random inputs, the system instruments the binary program to track memory addresses accessed during execution, then uses this information to determine valid input sequences that actually exercise the code paths.

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

Solution Approach 2:

The system implements feedback by instrumenting the binary program to monitor its own execution behavior. Memory addresses accessed during runtime are captured and fed back to determine which input sequences are valid, creating a closed-loop system that adapts to the actual program behavior rather than relying on predetermined random inputs.

Inventive Principle:
Principle #23Feedback

2Measurement precision

If source code or documentation is required to determine valid inputs, then input accuracy is improved, but adaptability to unknown binaries deteriorates

Engineering Contradiction:
Improveinput accuracyVSAvoidapplicability to unknown binaries
Core Design Contradiction:
Measurement precisionVSAdaptability or versatility

Solution Approach 1:

The binary program itself provides the information needed to determine valid inputs through its own execution behavior. By instrumenting the program to log memory addresses it accesses during runtime, the system extracts input validation rules directly from the program's self behavior, eliminating the need for external source code or documentation.

Inventive Principle:
Principle #25Self-service

Solution Approach 2:

The patent introduces memory address logging as an intermediary mechanism between the binary program and the testing system. This intermediary captures the program's internal state during execution and translates it into actionable information about valid input sequences, bridging the gap between unknown binary behavior and test input generation.

Inventive Principle:
Principle #24Intermediary (Mediator)

3Speed

If traditional testing methods are used without instrumentation, then execution speed is improved, but measurement precision of program behavior deteriorates

Engineering Contradiction:
Improveexecution speedVSAvoidprogram behavior observation
Core Design Contradiction:
SpeedVSMeasurement precision

Solution Approach 1:

The system applies partial instrumentation by logging only specific memory address accesses that are relevant to input validation, rather than comprehensively monitoring all program behavior. This selective approach maintains execution speed while capturing sufficient information to determine valid input sequences.

Inventive Principle:
Principle #16Partial or excessive action

Data Source

PatentUS10255166B2Determination of valid input sequences for an unknown binary program
Publication Date: 2019.04.09 FUJITSU LTD
  • US10255166B2 patent drawing
  • US10255166B2 patent drawing
  • US10255166B2 patent drawing

AI summary

A method to determine a valid input sequence for an unknown binary program is provided. The method may include obtaining an input sequence for an unknown binary program. The method may also include obtaining a memory address range for each of one or more variables in the unknown binary program and executing an instrumented version of the unknown binary program with the input sequence as an input to the instrumented version of the unknown binary program. The method may also include recording one or more memory addresses accessed during the execution of the instrumented version of the unknown binary program and determining that the unknown binary program accepts the input sequence as valid based on one or more of the one or more recorded memory addresses corresponding to the memory address range of one or more of the variables in the unknown binary program.