public interface

IControlFlowGraph

com.pnfsoftware.jeb.core.units.code.IControlFlowGraph<InsnType extends com.pnfsoftware.jeb.core.units.code.IInstruction>
Known Indirect Subclasses

Class Overview

Generic interface for control flow graph objects.

Summary

Public Methods
abstract IBasicBlock<InsnType> get(int index)
Retrieve a basic block.
abstract IBasicBlock<InsnType> getBlockAt(long base)
Get the basic block that starts at the provided address or offset.
abstract IBasicBlock<InsnType> getBlockContaining(long address)
Get the basic block that contains the provided address.
abstract List<? extends IBasicBlock<InsnType>> getBlocks()
Get a copy of the block list of the CFG.
abstract void getGraphRepresentation(List<int[]> edges, List<int[]> irregularEdges)
Get the a graph representation of the CFG.
abstract InsnType getInstruction(long address)
Get the instruction located at the exact address.
abstract List<InsnType> getInstructions()
Get the instruction list of this CFG by aggregating each instruction of every block.
abstract int size()
Get the number of blocks.

Public Methods

public abstract IBasicBlock<InsnType> get (int index)

Retrieve a basic block.

public abstract IBasicBlock<InsnType> getBlockAt (long base)

Get the basic block that starts at the provided address or offset.

Parameters
base the block address/offset
Returns
  • basic block, or null if none starts at that address

public abstract IBasicBlock<InsnType> getBlockContaining (long address)

Get the basic block that contains the provided address.

Note that the address just needs to be in the block address range; it does not need to point to the beginning of an instruction within the block

Parameters
address an address within the block

public abstract List<? extends IBasicBlock<InsnType>> getBlocks ()

Get a copy of the block list of the CFG. The list is ordered by ascending block address. Modifying the list does not impact the CFG.

Returns
  • a copy of the list of blocks

public abstract void getGraphRepresentation (List<int[]> edges, List<int[]> irregularEdges)

Get the a graph representation of the CFG. The list of edges return use a 1-based node numbering scheme.

Parameters
edges (output) array of regular edges, eg: {{1,2},{1,3},{2,3}}
irregularEdges (output) array of irregular edges

public abstract InsnType getInstruction (long address)

Get the instruction located at the exact address.

Returns
  • an instruction, null if none

public abstract List<InsnType> getInstructions ()

Get the instruction list of this CFG by aggregating each instruction of every block. The list is ordered by ascending address/offset.

public abstract int size ()

Get the number of blocks.