angr.analyses.binary_optimizer

class angr.analyses.binary_optimizer.ConstantPropagation

Bases: object

__init__(constant, constant_assignment_loc, constant_consuming_loc)
class angr.analyses.binary_optimizer.RedundantStackVariable

Bases: object

__init__(argument, stack_variable, stack_variable_consuming_locs)
class angr.analyses.binary_optimizer.RegisterReallocation

Bases: object

__init__(stack_variable, register_variable, stack_variable_sources, stack_variable_consumers, prologue_addr, prologue_size, epilogue_addr, epilogue_size)

Constructor.

Parameters:
class angr.analyses.binary_optimizer.DeadAssignment

Bases: object

__init__(pv)

Constructor.

Parameters:

pv (angr.analyses.ddg.ProgramVariable) – The assignment to remove.

class angr.analyses.binary_optimizer.BinaryOptimizer

Bases: Analysis

This is a collection of binary optimization techniques we used in Mechanical Phish during the finals of Cyber Grand Challenge. It focuses on dealing with some serious speed-impacting code constructs, and sort of worked on some CGC binaries compiled with O0. Use this analysis as a reference of how to use data dependency graph and such.

There is no guarantee that BinaryOptimizer will ever work on non-CGC binaries. Feel free to give us PR or MR, but please do not ask for support of non-CGC binaries.

BLOCKS_THRESHOLD = 500
__init__(cfg, techniques)
optimize()