angr / ailment

AIL: The angr Intermediate Language.
BSD 2-Clause "Simplified" License
29 stars 17 forks source link

Can't copy Const #59

Closed rhelmot closed 3 years ago

rhelmot commented 3 years ago

Not sure if this is an angr bug or an ailment bug, but I got it when I hit tab in a-m:

Traceback (most recent call last):
  File "/home/audrey/angr/ailment/ailment/tagged_object.py", line 23, in __getattr__
    return self.tags[item]
KeyError: 'copy'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/audrey/angr/angr-management/angrmanagement/ui/views/disassembly_view.py", line 206, in keyReleaseEvent
    self.decompile_current_function()
  File "/home/audrey/angr/angr-management/angrmanagement/ui/views/disassembly_view.py", line 399, in decompile_current_function
    self.workspace.decompile_function(self._current_function.am_obj, curr_ins=curr_ins)
  File "/home/audrey/angr/angr-management/angrmanagement/ui/workspace.py", line 305, in decompile_function
    view.function = func
  File "/home/audrey/angr/angr-management/angrmanagement/ui/views/code_view.py", line 82, in function
    self.decompile()
  File "/home/audrey/angr/angr-management/angrmanagement/ui/views/code_view.py", line 46, in decompile
    d = self.workspace.instance.project.analyses.Decompiler(
  File "/home/audrey/angr/angr/angr/analyses/analysis.py", line 115, in __call__
    oself.__init__(*args, **kwargs)
  File "/home/audrey/angr/angr/angr/analyses/decompiler/decompiler.py", line 30, in __init__
    self._decompile()
  File "/home/audrey/angr/angr/angr/analyses/decompiler/decompiler.py", line 47, in _decompile
    clinic = self.project.analyses.Clinic(self.func,
  File "/home/audrey/angr/angr/angr/analyses/analysis.py", line 115, in __call__
    oself.__init__(*args, **kwargs)
  File "/home/audrey/angr/angr/angr/analyses/decompiler/clinic.py", line 74, in __init__
    self._analyze()
  File "/home/audrey/angr/angr/angr/analyses/decompiler/clinic.py", line 145, in _analyze
    ail_graph = self._simplify_blocks(ail_graph, stack_pointer_tracker=spt)
  File "/home/audrey/angr/angr/angr/utils/timing.py", line 28, in timed_func
    return func(*args, **kwargs)
  File "/home/audrey/angr/angr/angr/analyses/decompiler/clinic.py", line 305, in _simplify_blocks
    simplified = self._simplify_block(ail_block, stack_pointer_tracker=stack_pointer_tracker)
  File "/home/audrey/angr/angr/angr/analyses/decompiler/clinic.py", line 321, in _simplify_block
    simp = self.project.analyses.AILBlockSimplifier(
  File "/home/audrey/angr/angr/angr/analyses/analysis.py", line 115, in __call__
    oself.__init__(*args, **kwargs)
  File "/home/audrey/angr/angr/angr/analyses/decompiler/block_simplifier.py", line 52, in __init__
    self._analyze()
  File "/home/audrey/angr/angr/angr/analyses/decompiler/block_simplifier.py", line 66, in _analyze
    new_block = self._simplify_block_once(block)
  File "/home/audrey/angr/angr/angr/analyses/decompiler/block_simplifier.py", line 82, in _simplify_block_once
    propagator = self.project.analyses.Propagator(block=block, stack_pointer_tracker=self._stack_pointer_tracker)
  File "/home/audrey/angr/angr/angr/analyses/analysis.py", line 115, in __call__
    oself.__init__(*args, **kwargs)
  File "/home/audrey/angr/angr/angr/analyses/propagator/propagator.py", line 375, in __init__
    self._analyze()
  File "/home/audrey/angr/angr/angr/analyses/propagator/propagator.py", line 515, in _analyze
    self._analysis_core_graph()
  File "/home/audrey/angr/angr/angr/analyses/forward_analysis/forward_analysis.py", line 240, in _analysis_core_graph
    changed, output_state = self._run_on_node(n, job_state)
  File "/home/audrey/angr/angr/angr/analyses/propagator/propagator.py", line 422, in _run_on_node
    state = engine.process(state, block=block, project=self.project, base_state=self._base_state,
  File "/home/audrey/angr/angr/angr/analyses/propagator/engine_base.py", line 28, in process
    self._process(state, None, block=kwargs.pop('block', None))
  File "/home/audrey/angr/angr/angr/engines/light/engine.py", line 649, in _process
    self._process_Stmt(whitelist=whitelist)
  File "/home/audrey/angr/angr/angr/engines/light/engine.py", line 666, in _process_Stmt
    self._handle_Stmt(stmt)
  File "/home/audrey/angr/angr/angr/engines/light/engine.py", line 712, in _handle_Stmt
    getattr(self, old_handler)(stmt)
  File "/home/audrey/angr/angr/angr/analyses/propagator/engine_ail.py", line 102, in _ail_handle_Return
    self._expr(ret_expr)
  File "/home/audrey/angr/angr/angr/engines/light/engine.py", line 687, in _expr
    return h(expr)
  File "/home/audrey/angr/angr/angr/analyses/propagator/engine_ail.py", line 143, in _ail_handle_Register
    new_expr = self.state.get_variable(expr)
  File "/home/audrey/angr/angr/angr/analyses/propagator/propagator.py", line 263, in get_variable
    v = first_obj.copy()
  File "/home/audrey/angr/ailment/ailment/tagged_object.py", line 25, in __getattr__
    return super(TaggedObject, self).__getattribute__(item)
AttributeError: 'Const' object has no attribute 'copy'
rhelmot commented 3 years ago

I'm full of shit! Just needed to pull.