about summary refs log tree commit diff stats
path: root/miasm2/analysis
diff options
context:
space:
mode:
Diffstat (limited to 'miasm2/analysis')
-rw-r--r--miasm2/analysis/binary.py4
-rw-r--r--miasm2/analysis/cst_propag.py2
-rw-r--r--miasm2/analysis/data_analysis.py2
-rw-r--r--miasm2/analysis/data_flow.py24
-rw-r--r--miasm2/analysis/dse.py12
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[