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:
stack_variable (SimStackVariable)
register_variable (SimRegisterVariable)
stack_variable_sources (list)
stack_variable_consumers (list)
prologue_addr (int)
prologue_size (int)
epilogue_addr (int)
epilogue_size (int)
- 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:
AnalysisThis 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()¶