Polymorphic Program Detection via Function Flow Grammar

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Current methods for detecting polymorphic computer programs, such as viruses, face challenges in identifying variations in object code due to encryption, opcode reordering, and self-modification, which existing flow-graph-based detectors struggle to address effectively.

Innovation Solution

The method involves generating a function flow grammar based on control flow graphs, reducing them to exclude dynamic items, and ordering functions by relative complexity or label to create a signature for comparison with known programs, leveraging isomorphism between original and polymorphic instances.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Difficulty of detecting and measuring

If flow-graph-based detection methods are used to detect polymorphic computer programs, then detection capability is improved, but the methods fail to account for instruction reordering and changes in register functions, reducing detection accuracy

Engineering Contradiction:
Improvedetection capabilityVSAvoiddetection accuracy
Core Design Contradiction:
Difficulty of detecting and measuringVSMeasurement precision

Solution Approach 1:

The patent segments the control flow graph into basic blocks and represents instructions within those blocks using abstract syntax trees (ASTs). This segmentation allows the system to analyze individual instruction sequences while maintaining the overall control flow structure, enabling accurate detection despite instruction reordering and register function changes.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent transforms the representation of control flow by changing parameters from concrete instruction sequences to abstracted AST representations. This parameter change allows the detection system to compare semantic equivalence rather than syntactic identity, making it invariant to instruction reordering, renaming, and register function changes while maintaining detection accuracy.

Inventive Principle:
Principle #35Parameter changes

2Productivity

If automated matching with opcode recognition is implemented, then matching speed is improved, but human intervention is still required to recognize shuffled opcodes, increasing operational complexity

Engineering Contradiction:
Improvematching speedVSAvoidoperational complexity
Core Design Contradiction:
ProductivityVSEase of operation

Solution Approach 1:

The patent implements a fully automated detection system where the abstract syntax tree comparison algorithm automatically identifies polymorphic variants without requiring human intervention. The system self-services by comparing AST representations of control flow graphs, automatically recognizing shuffled opcodes through structural equivalence rather than syntactic matching, thereby eliminating manual analysis while maintaining high accuracy.

Inventive Principle:
Principle #25Self-service

3Reliability

If static and dynamic analysis with virtual computer execution is performed, then detection thoroughness is improved, but analysis time and computational resources increase significantly

Engineering Contradiction:
Improvedetection thoroughnessVSAvoidanalysis time
Core Design Contradiction:
ReliabilityVSLoss of time

Solution Approach 1:

The patent extracts only the essential control flow structure and instruction semantics from the computer program, representing them as abstract syntax trees within control flow graphs. By taking out only the necessary structural and semantic information rather than executing the entire program dynamically, the system achieves thorough detection capability while significantly reducing analysis time and computational resource requirements.

Inventive Principle:
Principle #2Taking out (Extraction)

Data Source

PatentUS8046834B2Method of polymorphic detection
Publication Date: 2011.10.25 CACI LGS INNOVATIONS LLC
  • US8046834B2 patent drawing
  • US8046834B2 patent drawing
  • US8046834B2 patent drawing

AI summary

A computer program signature may be determined based on the function flow grammar for a given source code. The function flow grammar may be determined based on reduced control flow graphs generated based on control flow graphs for each function within the source code. A polymorph of a computer program may be detected by comparing the determined computer program signature with computer program signatures, which may be included in a database.