diff options
Diffstat (limited to 'miasm2/analysis')
| -rw-r--r-- | miasm2/analysis/binary.py | 4 | ||||
| -rw-r--r-- | miasm2/analysis/cst_propag.py | 2 | ||||
| -rw-r--r-- | miasm2/analysis/data_analysis.py | 2 | ||||
| -rw-r--r-- | miasm2/analysis/data_flow.py | 24 | ||||
| -rw-r--r-- | miasm2/analysis/dse.py | 12 |
5 files changed, 22 insertions, 22 deletions
diff --git a/miasm2/analysis/binary.py b/miasm2/analysis/binary.py index 21e5c356..6dfef92a 100644 --- a/miasm2/analysis/binary.py +++ b/miasm2/analysis/binary.py @@ -156,7 +156,7 @@ class ContainerPE(Container): # Build the bin_stream instance and set the entry point try: - self._bin_stream = bin_stream_pe(self._executable.virt) + self._bin_stream = bin_stream_pe(self._executable) ep_detected = self._executable.Opthdr.AddressOfEntryPoint self._entry_point = self._executable.rva2virt(ep_detected) except Exception, error: @@ -200,7 +200,7 @@ class ContainerELF(Container): # Build the bin_stream instance and set the entry point try: - self._bin_stream = bin_stream_elf(self._executable.virt) + self._bin_stream = bin_stream_elf(self._executable) self._entry_point = self._executable.Ehdr.entry + addr except Exception, error: raise ContainerParsingException('Cannot read ELF: %s' % error) diff --git a/miasm2/analysis/cst_propag.py b/miasm2/analysis/cst_propag.py index 48d588c8..43e83c4a 100644 --- a/miasm2/analysis/cst_propag.py +++ b/miasm2/analysis/cst_propag.py @@ -98,7 +98,7 @@ class SymbExecStateFix(SymbolicExecutionEngine): for dst, src in assignblk.iteritems(): src = self.propag_expr_cst(src) if dst.is_mem(): - ptr = dst.arg + ptr = dst.ptr ptr = self.propag_expr_cst(ptr) dst = ExprMem(ptr, dst.size) new_assignblk[dst] = src diff --git a/miasm2/analysis/data_analysis.py b/miasm2/analysis/data_analysis.py index 9c21fd51..30346e63 100644 --- a/miasm2/analysis/data_analysis.py +++ b/miasm2/analysis/data_analysis.py @@ -29,7 +29,7 @@ def intra_block_flow_raw(ir_arch, ircfg, flow_graph, irb, in_nodes, out_nodes): node_n_w = get_node_name(irb.loc_key, i, n) if not n in nodes_r: continue - o_r = n.arg.get_r(mem_read=False, cst_read=True) + o_r = n.ptr.get_r(mem_read=False, cst_read=True) for n_r in o_r: if n_r in current_nodes: node_n_r = current_nodes[n_r] diff --git a/miasm2/analysis/data_flow.py b/miasm2/analysis/data_flow.py index 83dae92d..49519e9c 100644 --- a/miasm2/analysis/data_flow.py +++ b/miasm2/analysis/data_flow.py @@ -159,7 +159,7 @@ class DiGraphDefUse(DiGraph): read_vars = expr.get_r(mem_read=deref_mem) if deref_mem and lval.is_mem(): - read_vars.update(lval.arg.get_r(mem_read=deref_mem)) + read_vars.update(lval.ptr.get_r(mem_read=deref_mem)) for read_var in read_vars: for reach in assignblk_reaching_defs.get(read_var, set()): self.add_data_edge(AssignblkNode(reach[0], reach[1], read_var), @@ -538,7 +538,7 @@ class SSADefUse(DiGraph): lbl, index, dst = node sources = set() if dst.is_mem(): - sources.update(dst.arg.get_r(mem_read=True)) + sources.update(dst.ptr.get_r(mem_read=True)) sources.update(src.get_r(mem_read=True)) for source in sources: if not source.is_mem(): @@ -741,7 +741,7 @@ class PropagateExpr(object): continue if src.is_mem(): - ptr = src.arg + ptr = src.ptr ptr = ptr.replace_expr(replace) new_src = ExprMem(ptr, src.size) else: @@ -750,7 +750,7 @@ class PropagateExpr(object): if dst.is_id(): new_dst = dst elif dst.is_mem(): - ptr = dst.arg + ptr = dst.ptr ptr = ptr.replace_expr(replace) new_dst = ExprMem(ptr, dst.size) else: @@ -787,7 +787,7 @@ def stack_to_reg(expr): def is_stack_access(ir_arch_a, expr): if not expr.is_mem(): return False - ptr = expr.arg + ptr = expr.ptr diff = expr_simp(ptr - ir_arch_a.sp) if not diff.is_int(): return False @@ -819,7 +819,7 @@ def check_expr_below_stack(ir_arch_a, expr): @ir_arch_a: ira instance @expr: Expression instance """ - ptr = expr.arg + ptr = expr.ptr diff = expr_simp(ptr - ir_arch_a.sp) if not diff.is_int(): return True @@ -845,7 +845,7 @@ def retrieve_stack_accesses(ir_arch_a, ssa): base_to_var = {} for var in stack_vars: - base_to_var.setdefault(var.arg, set()).add(var) + base_to_var.setdefault(var.ptr, set()).add(var) base_to_interval = {} @@ -887,7 +887,7 @@ def fix_stack_vars(expr, base_to_info): """ if not expr.is_mem(): return expr - ptr = expr.arg + ptr = expr.ptr if ptr not in base_to_info: return expr size, name = base_to_info[ptr] @@ -933,8 +933,8 @@ def replace_stack_vars(ir_arch_a, ssa): def memlookup_test(expr, bs, is_addr_ro_variable, result): - if expr.is_mem() and expr.arg.is_int(): - ptr = int(expr.arg) + if expr.is_mem() and expr.ptr.is_int(): + ptr = int(expr.ptr) if is_addr_ro_variable(bs, ptr, expr.size): result.add(expr) return False @@ -953,7 +953,7 @@ def get_memlookup(expr, bs, is_addr_ro_variable): def read_mem(bs, expr): - ptr = int(expr.arg) + ptr = int(expr.ptr) var_bytes = bs.getbytes(ptr, expr.size / 8)[::-1] try: value = int(var_bytes.encode('hex'), 16) @@ -989,7 +989,7 @@ def load_from_int(ir_arch, bs, is_addr_ro_variable): modified = True # Test dst pointer if dst is mem if dst.is_mem(): - ptr = dst.arg + ptr = dst.ptr mems = get_memlookup(ptr, bs, is_addr_ro_variable) if mems: replace = {} diff --git a/miasm2/analysis/dse.py b/miasm2/analysis/dse.py index 1a3c0259..1875f138 100644 --- a/miasm2/analysis/dse.py +++ b/miasm2/analysis/dse.py @@ -105,9 +105,9 @@ class ESETrackModif(EmulatedSymbExec): # symbolize def _func_read(self, expr_mem): - if not expr_mem.arg.is_int(): + if not expr_mem.ptr.is_int(): return expr_mem - dst_addr = int(expr_mem.arg) + dst_addr = int(expr_mem.ptr) if not self.dse_memory_range: # Trivial case (optimization) @@ -121,7 +121,7 @@ class ESETrackModif(EmulatedSymbExec): out.append(self.dse_memory_to_expr(addr)) else: # Get concrete value - atomic_access = ExprMem(ExprInt(addr, expr_mem.arg.size), 8) + atomic_access = ExprMem(ExprInt(addr, expr_mem.ptr.size), 8) out.append(super(ESETrackModif, self)._func_read(atomic_access)) if len(out) == 1: @@ -284,8 +284,8 @@ class DSEEngine(object): value = getattr(self.jitter.cpu, symbol.name) if value != symb_value: errors.append(DriftInfo(symbol, symb_value, value)) - elif symbol.is_mem() and symbol.arg.is_int(): - value_chr = self.jitter.vm.get_mem(int(symbol.arg), + elif symbol.is_mem() and symbol.ptr.is_int(): + value_chr = self.jitter.vm.get_mem(int(symbol.ptr), symbol.size / 8) exp_value = int(value_chr[::-1].encode("hex"), 16) if exp_value != symb_value: @@ -638,7 +638,7 @@ class DSEPathConstraint(DSEEngine): mem.update(eaff.src.get_r(mem_read=True)) for expr in mem: if expr.is_mem(): - addr_range = expr_range(expr.arg) + addr_range = expr_range(expr.ptr) # At upper bounds, add the size of the memory access # if addr (- [a, b], then @size[addr] reachables # values are in @8[a, b + size[ |