about summary refs log tree commit diff stats
path: root/miasm2/analysis/dse.py
diff options
context:
space:
mode:
authorFabrice Desclaux <fabrice.desclaux@cea.fr>2017-10-03 17:20:38 +0200
committerFabrice Desclaux <fabrice.desclaux@cea.fr>2018-03-15 14:46:36 +0100
commit1b534d9ad543473f12ddcb631e0cddb0cbd54ff4 (patch)
tree5d5248ceb9358a1f497f4830e821e50afb340dba /miasm2/analysis/dse.py
parentedabfcda0fa8c0dd8ab3017853b375b1ee24b754 (diff)
downloadmiasm-1b534d9ad543473f12ddcb631e0cddb0cbd54ff4.tar.gz
miasm-1b534d9ad543473f12ddcb631e0cddb0cbd54ff4.zip
Symbexec: use hashtable for mem symbols
Diffstat (limited to 'miasm2/analysis/dse.py')
-rw-r--r--miasm2/analysis/dse.py9
1 files changed, 5 insertions, 4 deletions
diff --git a/miasm2/analysis/dse.py b/miasm2/analysis/dse.py
index 38c9aeaf..0a5445a6 100644
--- a/miasm2/analysis/dse.py
+++ b/miasm2/analysis/dse.py
@@ -106,7 +106,8 @@ class ESETrackModif(EmulatedSymbExec):
                                        # symbolize
 
     def _func_read(self, expr_mem):
-        assert expr_mem.arg.is_int()
+        if not expr_mem.arg.is_int():
+            return expr_mem
         dst_addr = int(expr_mem.arg)
 
         if not self.dse_memory_range:
@@ -310,7 +311,7 @@ class DSEEngine(object):
 
         # Is the symbolic execution going (potentially) to jump on a lbl_gen?
         if len(self.ir_arch.blocks) == 1:
-            next_addr = self.symb.emul_ir_blocks(cur_addr)
+            next_addr = self.symb.run_at(cur_addr)
         else:
             # Emulation could stuck in generated IR blocks
             # But concrete execution callback is not enough precise to obtain
@@ -320,8 +321,8 @@ class DSEEngine(object):
             # Update the concrete execution
             self._update_state_from_concrete_symb(self.symb_concrete)
             while True:
-                next_addr_concrete = self.symb_concrete.emul_ir_block(cur_addr)
-                self.symb.emul_ir_block(cur_addr)
+                next_addr_concrete = self.symb_concrete.run_block_at(cur_addr)
+                self.symb.run_block_at(cur_addr)
 
                 if not(expr_is_label(next_addr_concrete) and
                        next_addr_concrete.name.offset is None):