angr.analyses.decompiler.optimization_passes.const_prop_reverter¶
- class angr.analyses.decompiler.optimization_passes.const_prop_reverter.BlockWalker¶
Bases:
AILBlockViewer- __init__(walked_objs)¶
- Parameters:
walked_objs (dict[type, set[SideEffectStatement | Assignment | Return | Store]])
- class angr.analyses.decompiler.optimization_passes.const_prop_reverter.ConstPropOptReverter¶
Bases:
OptimizationPassThis optimization reverts the effects of constant propagation done by the compiler as discussed in the USENIX 2024 paper SAILR. This optimization’s main goal is to enable later optimizations that rely on symbolic variables to be more effective. This optimization pass will convert two statements with a difference of a const and a symbolic variable into two statements with the symbolic variables.
As an example: x = 75 puts(x) puts(75)
will be converted to: x = 75 puts(x) puts(x)
- ARCHES = None¶
- PLATFORMS = None¶
- STAGE: OptimizationPassStage = 10¶
- NAME = 'Revert Constant Propagation Optimizations'¶
- DESCRIPTION = "This optimization reverts the effects of constant propagation done by the compiler as discussed in the\n USENIX 2024 paper SAILR. This optimization's main goal is to enable later optimizations that rely on\n symbolic variables to be more effective. This optimization pass will convert two statements with a difference of\n a const and a symbolic variable into two statements with the symbolic variables.\n\n As an example:\n x = 75\n puts(x)\n puts(75)\n\n will be converted to:\n x = 75\n puts(x)\n puts(x)"¶
- __init__(*args, region_identifier=None, reaching_definitions=None, **kwargs)¶