Architecture module

Contains the interface definition of an architecture.

class ocgraph.internal.architecture.interface.Architecture

Bases: ABC

Architecture Class defining the target specific instruction set characteristics.

abstract get_branch_delay(instruction: Instruction) int

Return the branch delay of an instruction.

abstract is_branch(instruction: Instruction) bool

Return if disassembled instruction is a branch instruction.

abstract is_call(instruction: Instruction) bool

Return if disassembled instruction is a subroutine call.

abstract is_direct_branch(instruction: Instruction) bool

Return true when the given instruction is a direct branch.

abstract is_sink(instruction: Instruction) bool

Return if disassembled instruction serves as sink (e.g. ret).

abstract is_unconditional_branch(instruction: Instruction) bool

Return if disassembled instruction is an unconditional branch.

Contains the functionality to create a specific Architecture.

class ocgraph.internal.architecture.factory.ArchitectureFactory

Bases: object

Factory class to instantiate a Parser.

static create(name: str) Architecture

Create a Parser according to the given configuration.

static options() list[str]

Return all available architectures options.

Contains a generic architecture class with most common use .

class ocgraph.internal.architecture.generic.GenericArchitecture

Bases: Architecture, ABC

Generic Architecture Class.

get_branch_delay(instruction: Instruction) int

Return the branch delay of an instruction.

is_direct_branch(instruction: Instruction) bool

Return true if the given instruction is a direct branch.

Contains instruction info for ARM-compatible architecture.

class ocgraph.internal.architecture.arm.ArmArchitecture

Bases: GenericArchitecture

ArmArchitecture Class.

is_branch(instruction: Instruction) bool

Return if disassembled instruction is a branch instruction.

is_call(instruction: Instruction) bool

Return if disassembled instruction is a subroutine call.

Various flavors of call:

bl 0x19d90 <_IO_vtable_check>

Note that we should be careful to not mix it with conditional branches like ‘ble’.

is_sink(instruction: Instruction) bool

Detect various flavors of return like.

bx lr op {r2-r6,pc}

Note that we do not consider conditional branches (e.g. ‘bxle’) to sink.

is_unconditional_branch(instruction: Instruction) bool

Return if disassembled instruction is an unconditional branch.

Contains instruction info for MSP430-compatible architecture.

class ocgraph.internal.architecture.msp430.MSP430Architecture

Bases: GenericArchitecture

Msp430Architecture Class.

is_branch(instruction: Instruction) bool

Return if disassembled instruction is a branch instruction.

is_call(instruction: Instruction) bool

Return if disassembled instruction is a subroutine call.

is_direct_branch(instruction: Instruction) bool

Return true when the given instruction is a direct branch.

is_sink(instruction: Instruction) bool

Return if disassembled instruction serves as sink (e.g. ret).

is_unconditional_branch(instruction: Instruction) bool

Return if disassembled instruction is an unconditional branch.

Contains instruction info for PPC-compatible architecture.

class ocgraph.internal.architecture.ppc.PpcArchitecture

Bases: GenericArchitecture

PpcArchitecture Class.

is_branch(instruction: Instruction) bool

Return if disassembled instruction is a branch instruction.

is_call(instruction: Instruction) bool

Return if disassembled instruction is a subroutine call.

is_sink(instruction: Instruction) bool

Return if disassembled instruction serves as sink (e.g. ret).

is_unconditional_branch(instruction: Instruction) bool

Return if disassembled instruction is an unconditional branch.

Contains instruction info for SPARC-compatible Architecture.

class ocgraph.internal.architecture.sparc.SparcArchitecture

Bases: GenericArchitecture

SparcArchitecture Class.

get_branch_delay(instruction: Instruction) int

Return the branch delay of an instruction.

is_branch(instruction: Instruction) bool

Return if disassembled instruction is a branch instruction.

is_call(instruction: Instruction) bool

Return if disassembled instruction is a subroutine call.

is_direct_branch(instruction: Instruction) bool

Return true when the given instruction is a direct branch.

is_sink(instruction: Instruction) bool

Return if disassembled instruction serves as sink (e.g. ret).

is_unconditional_branch(instruction: Instruction) bool

Return if disassembled instruction is an unconditional branch.

Contains instruction info for x86-compatible architectures.

class ocgraph.internal.architecture.x86.X86Architecture

Bases: GenericArchitecture

X86Architecture Class.

is_branch(instruction: Instruction) bool

Return if disassembled instruction is a branch instruction.

is_call(instruction: Instruction) bool

Return if disassembled instruction is a subroutine call.

is_sink(instruction: Instruction) bool

Return if disassembled instruction serves as sink (e.g. ret).

is_unconditional_branch(instruction: Instruction) bool

Return if disassembled instruction is an unconditional branch.