cfg

This module generates the control flow graph of the disassembled code

cfg_edge(src:address, dest:address, conditional:symbol, indirect:symbol, type:symbol)

This predicate specifies a CFG edge between two locations in the binary.

cfg_edge_to_top(src:address, conditional:symbol, type:symbol)

This predicate specifies CFG edges from src to a Top proxy block to model calls or jumps whose destination is unknown. This is optimistic, if at least one target of a jump/call is known, the edge to the proxy block will not be generated.

cfg_edge_to_symbol(src:address, Symbol:symbol, conditional:symbol, indirect:symbol, type:symbol)

This predicate specifies CFG edges whose destination is an external symbol.

jump_table(Src:address, Memory:address)

The jump at address Src might access the jump table entry at address Memory.

resolved_transfer(EA:address, Dest:address, Type:symbol)

This predicate represents known targets of indirect jumps or calls. EA is the address of the jump or call instruction and Dest

is the destination address. Type can be “branch” or “call”.

resolved_transfer_to_symbol(EA:address, Symbol:symbol, Type:symbol)

This predicates represent known targets of indirect jumps or calls that refer to external symbols. It is similar to resolved_transfer but its target is not an address but a symbol. ‘Type’ can be “branch” or “call”.

pointer_to_external_symbol(DataPointer:address, Symbol:symbol)

Auxiliary predicate of resolved_transfer_to_symbol that captures a pointer at address ‘DataPointer’ that refers to the external symbol ‘Symbol’.