diff options
| author | Fabrice Desclaux <fabrice.desclaux@cea.fr> | 2017-10-03 17:20:38 +0200 |
|---|---|---|
| committer | Fabrice Desclaux <fabrice.desclaux@cea.fr> | 2018-03-15 14:46:36 +0100 |
| commit | 1b534d9ad543473f12ddcb631e0cddb0cbd54ff4 (patch) | |
| tree | 5d5248ceb9358a1f497f4830e821e50afb340dba /miasm2/analysis/dse.py | |
| parent | edabfcda0fa8c0dd8ab3017853b375b1ee24b754 (diff) | |
| download | miasm-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.py | 9 |
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): |