In [4]: vfg = b.analyses.VFG(cfg, interfunction_level=3)
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-4-25c1ab7b043c> in <module>()
----> 1 vfg = b.analyses.VFG(cfg, interfunction_level=3)
/home/riyad/tmp/angr/angr/angr/analysis.pyc in _analysis(self, analysis, *args, **kwargs)
67
68 # Call __init__ of chosen analysis
---> 69 a = analysis(self._p, fail_fast, *args, **kwargs)
70
71 return a
/home/riyad/tmp/angr/angr/angr/analysis.pyc in __core_init__(self, project, fail_fast, *args, **kwargs)
123
124 if kwargs.pop('do_analysis', True):
--> 125 self.__analysis_init__(*args, **kwargs) # pylint:disable=no-member
126
127 def post_load(self):
/home/riyad/tmp/angr/angr/angr/analyses/vfg.pyc in __init__(self, cfg, context_sensitivity_level, function_start, interfunction_level, initial_state, avoid_runs, remove_options)
122
123 # Begin VFG construction!
--> 124 self._construct(initial_state=initial_state)
125
126 self.result = {
/home/riyad/tmp/angr/angr/angr/analyses/vfg.pyc in _construct(self, initial_state)
268
269 try:
--> 270 self._ai_analyze(initial_state)
271 except AngrVFGRestartAnalysisNotice:
272 l.info("Restarting analysis.")
/home/riyad/tmp/angr/angr/angr/analyses/vfg.pyc in _ai_analyze(self, initial_state, function_key)
333 self._handle_entry(entry_wrapper, worklist,
334 exit_targets, fake_func_return_paths,
--> 335 tracing_times, retn_target_sources
336 )
337
/home/riyad/tmp/angr/angr/angr/analyses/vfg.pyc in _handle_entry(self, entry_wrapper, remaining_entries, exit_targets, pending_returns, tracing_times, retn_target_sources)
563
564 # Execute this basic block with input state, and get a new SimRun object
--> 565 simrun, error_occured, restart_analysis = self._get_simrun(input_state, current_path, addr)
566
567 if restart_analysis:
/home/riyad/tmp/angr/angr/angr/analyses/vfg.pyc in _get_simrun(self, state, current_path, addr)
431
432 try:
--> 433 sim_run = self._project.factory.sim_run(current_path.state, jumpkind=jumpkind)
434 except simuvex.SimUninitializedAccessError as ex:
435 l.error("Found an uninitialized access (used as %s) at expression %s.", ex.expr_type, ex.expr)
/home/riyad/tmp/angr/angr/angr/factory.pyc in sim_run(self, state, addr, jumpkind, **block_opts)
114 else:
115 l.debug("Creating SimIRSB at 0x%x", addr)
--> 116 r = self.sim_block(state, addr=addr, **block_opts)
117
118 return r
/home/riyad/tmp/angr/angr/angr/factory.pyc in sim_block(self, state, stmt_whitelist, last_stmt, addr, opt_level, **block_opts)
62 addr=addr,
63 whitelist=stmt_whitelist,
---> 64 last_stmt=last_stmt)
65
66 def sim_run(self, state, addr=None, jumpkind=None, **block_opts):
/home/riyad/tmp/angr/simuvex/simuvex/vex/irsb.pyc in __init__(self, state, irsb, irsb_id, whitelist, last_stmt, **kwargs)
60 self.state.release_plugin('solver_engine')
61
---> 62 self._handle_irsb()
63
64 # It's for debugging
/home/riyad/tmp/angr/simuvex/simuvex/vex/irsb.pyc in _handle_irsb(self)
114
115 self.default_exit = self.add_successor(self.state, self.next_expr.expr, self.default_exit_guard,
--> 116 self.irsb.jumpkind, 'default')
117
118 if o.FRESHNESS_ANALYSIS in self.state.options:
/home/riyad/tmp/angr/simuvex/simuvex/s_run.pyc in add_successor(self, state, target, guard, jumpkind, exit_stmt_idx, source)
67 state.scratch.exit_stmt_idx = exit_stmt_idx
68
---> 69 state.add_constraints(guard)
70 state.regs.ip = target
71
/home/riyad/tmp/angr/simuvex/simuvex/s_state.pyc in add_constraints(self, *args, **kwargs)
227 # then replace each original SI the intersection of original SI and the constrained one.
228
--> 229 _, converted = self.se.constraint_to_si(arg)
230
231 for original_expr, constrained_si in converted:
/home/riyad/tmp/angr/simuvex/simuvex/plugins/solver.pyc in ast_stripping_op(f, *args, **kwargs)
41 import ipdb; ipdb.set_trace()
42 else:
---> 43 r = _actual_ast_stripping_op(f, *args, **kwargs)
44
45 return r
/home/riyad/tmp/angr/simuvex/simuvex/s_action_object.pyc in ast_stripping_op(f, *args, **kwargs)
34 new_args = _raw_ast(args)
35 new_kwargs = _raw_ast(kwargs)
---> 36 return f(*new_args, **new_kwargs)
37
38 def ast_preserving_op(f, *args, **kwargs):
/home/riyad/tmp/angr/claripy/claripy/ast/bool.pyc in constraint_to_si(expr)
155 replace_list = [ ]
156
--> 157 satisfiable, replace_list = _all_backends[1].constraint_to_si(expr)
158
159 # Make sure the replace_list are all ast.bvs
/home/riyad/tmp/angr/claripy/claripy/backends/backend_vsa.pyc in constraint_to_si(self, expr)
914
915 try:
--> 916 sat, lst = self.cts_handle(expr.op, expr.args)
917
918 return sat, lst
/home/riyad/tmp/angr/claripy/claripy/backends/backend_vsa.pyc in cts_handle(self, op, args)
872
873 # Simplify left side
--> 874 lhs, new_cond = self.cts_simplify(lhs.op, lhs.args, lhs, (op, rhs))
875
876 # Update args
/home/riyad/tmp/angr/claripy/claripy/backends/backend_vsa.pyc in cts_simplify(self, op, args, expr, condition)
862
863 def cts_simplify(self, op, args, expr, condition):
--> 864 new_expr, new_cond = getattr(self, "cts_simplifier_%s" % op)(args, expr, condition)
865
866 return new_expr, new_cond
AttributeError: 'BackendVSA' object has no attribute 'cts_simplifier___ne__'