about summary refs log tree commit diff stats
path: root/miasm/analysis/data_analysis.py
diff options
context:
space:
mode:
authorFabrice Desclaux <fabrice.desclaux@cea.fr>2020-12-25 21:37:02 +0100
committerFabrice Desclaux <fabrice.desclaux@cea.fr>2020-12-25 21:37:02 +0100
commit972cad3a89d2856a6969328a9870a1b472cd9fd2 (patch)
tree65687e39ab4ce446957c73d95fd5d662b49d68ed /miasm/analysis/data_analysis.py
parentdd14b59efbd918838dcbb88c8d64bad53fcd054c (diff)
downloadfocaccia-miasm-972cad3a89d2856a6969328a9870a1b472cd9fd2.tar.gz
focaccia-miasm-972cad3a89d2856a6969328a9870a1b472cd9fd2.zip
Rename examples lifter
Diffstat (limited to 'miasm/analysis/data_analysis.py')
-rw-r--r--miasm/analysis/data_analysis.py30
1 files changed, 15 insertions, 15 deletions
diff --git a/miasm/analysis/data_analysis.py b/miasm/analysis/data_analysis.py
index ae06c59b..cd290d67 100644
--- a/miasm/analysis/data_analysis.py
+++ b/miasm/analysis/data_analysis.py
@@ -15,7 +15,7 @@ def get_node_name(label, i, n):
     return n_name
 
 
-def intra_block_flow_raw(ir_arch, ircfg, flow_graph, irb, in_nodes, out_nodes):
+def intra_block_flow_raw(lifter, ircfg, flow_graph, irb, in_nodes, out_nodes):
     """
     Create data flow for an irbloc using raw IR expressions
     """
@@ -66,7 +66,7 @@ def intra_block_flow_raw(ir_arch, ircfg, flow_graph, irb, in_nodes, out_nodes):
 
 
 
-def inter_block_flow_link(ir_arch, ircfg, flow_graph, irb_in_nodes, irb_out_nodes, todo, link_exec_to_data):
+def inter_block_flow_link(lifter, ircfg, flow_graph, irb_in_nodes, irb_out_nodes, todo, link_exec_to_data):
     lbl, current_nodes, exec_nodes = todo
     current_nodes = dict(current_nodes)
 
@@ -106,19 +106,19 @@ def inter_block_flow_link(ir_arch, ircfg, flow_graph, irb_in_nodes, irb_out_node
     return todo
 
 
-def create_implicit_flow(ir_arch, flow_graph, irb_in_nodes, irb_out_ndes):
+def create_implicit_flow(lifter, flow_graph, irb_in_nodes, irb_out_ndes):
 
     # first fix IN/OUT
     # If a son read a node which in not in OUT, add it
-    todo = set(ir_arch.blocks.keys())
+    todo = set(lifter.blocks.keys())
     while todo:
         lbl = todo.pop()
-        irb = ir_arch.blocks[lbl]
-        for lbl_son in ir_arch.graph.successors(irb.loc_key):
-            if not lbl_son in ir_arch.blocks:
+        irb = lifter.blocks[lbl]
+        for lbl_son in lifter.graph.successors(irb.loc_key):
+            if not lbl_son in lifter.blocks:
                 print("cannot find block!!", lbl)
                 continue
-            irb_son = ir_arch.blocks[lbl_son]
+            irb_son = lifter.blocks[lbl_son]
             for n_r in irb_in_nodes[irb_son.loc_key]:
                 if n_r in irb_out_nodes[irb.loc_key]:
                     continue
@@ -130,13 +130,13 @@ def create_implicit_flow(ir_arch, flow_graph, irb_in_nodes, irb_out_ndes):
                 if not n_r in irb_in_nodes[irb.loc_key]:
                     irb_in_nodes[irb.loc_key][n_r] = irb.loc_key, 0, n_r
                 node_n_r = irb_in_nodes[irb.loc_key][n_r]
-                for lbl_p in ir_arch.graph.predecessors(irb.loc_key):
+                for lbl_p in lifter.graph.predecessors(irb.loc_key):
                     todo.add(lbl_p)
 
                 flow_graph.add_uniq_edge(node_n_r, node_n_w)
 
 
-def inter_block_flow(ir_arch, ircfg, flow_graph, irb_0, irb_in_nodes, irb_out_nodes, link_exec_to_data=True):
+def inter_block_flow(lifter, ircfg, flow_graph, irb_0, irb_in_nodes, irb_out_nodes, link_exec_to_data=True):
 
     todo = set()
     done = set()
@@ -147,7 +147,7 @@ def inter_block_flow(ir_arch, ircfg, flow_graph, irb_0, irb_in_nodes, irb_out_no
         if state in done:
             continue
         done.add(state)
-        out = inter_block_flow_link(ir_arch, ircfg, flow_graph, irb_in_nodes, irb_out_nodes, state, link_exec_to_data)
+        out = inter_block_flow_link(lifter, ircfg, flow_graph, irb_in_nodes, irb_out_nodes, state, link_exec_to_data)
         todo.update(out)
 
 
@@ -161,20 +161,20 @@ class symb_exec_func(object):
     There is no real magic here, loops and complex merging will certainly fail.
     """
 
-    def __init__(self, ir_arch):
+    def __init__(self, lifter):
         self.todo = set()
         self.stateby_ad = {}
         self.cpt = {}
         self.states_var_done = set()
         self.states_done = set()
         self.total_done = 0
-        self.ir_arch = ir_arch
+        self.lifter = lifter
 
     def add_state(self, parent, ad, state):
         variables = dict(state.symbols)
 
         # get block dead, and remove from state
-        b = self.ir_arch.get_block(ad)
+        b = self.lifter.get_block(ad)
         if b is None:
             raise ValueError("unknown block! %s" % ad)
         s = parent, ad, tuple(sorted(viewitems(variables)))
@@ -198,7 +198,7 @@ class symb_exec_func(object):
             self.states_done.add(state)
             self.states_var_done.add(state)
 
-            sb = SymbolicExecutionEngine(self.ir_arch, dict(s))
+            sb = SymbolicExecutionEngine(self.lifter, dict(s))
 
             return parent, ad, sb
         return None