about summary refs log tree commit diff stats
path: root/example/ida
diff options
context:
space:
mode:
Diffstat (limited to 'example/ida')
-rw-r--r--example/ida/ctype_propagation.py38
-rw-r--r--example/ida/depgraph.py24
-rw-r--r--example/ida/graph_ir.py20
3 files changed, 41 insertions, 41 deletions
diff --git a/example/ida/ctype_propagation.py b/example/ida/ctype_propagation.py
index 3de81d0d..3dcd8b98 100644
--- a/example/ida/ctype_propagation.py
+++ b/example/ida/ctype_propagation.py
@@ -148,20 +148,20 @@ class MyCHandler(CHandler):
 
 class TypePropagationEngine(SymbExecCType):
 
-    def __init__(self, ir_arch, types_mngr, state):
+    def __init__(self, lifter, types_mngr, state):
         mychandler = MyCHandler(types_mngr, state.symbols)
-        super(TypePropagationEngine, self).__init__(ir_arch,
+        super(TypePropagationEngine, self).__init__(lifter,
                                                     state.symbols,
                                                     mychandler)
 
 
 class SymbExecCTypeFix(SymbExecCType):
 
-    def __init__(self, ir_arch,
+    def __init__(self, lifter,
                  symbols, chandler,
                  cst_propag_link,
                  sb_expr_simp=expr_simp):
-        super(SymbExecCTypeFix, self).__init__(ir_arch,
+        super(SymbExecCTypeFix, self).__init__(lifter,
                                                symbols,
                                                chandler,
                                                sb_expr_simp=expr_simp)
@@ -177,7 +177,7 @@ class SymbExecCTypeFix(SymbExecCType):
 
         offset2cmt = {}
         for index, assignblk in enumerate(irb):
-            if set(assignblk) == set([self.ir_arch.IRDst, self.ir_arch.pc]):
+            if set(assignblk) == set([self.lifter.IRDst, self.lifter.pc]):
                 # Don't display on jxx
                 continue
             instr = assignblk.instr
@@ -187,7 +187,7 @@ class SymbExecCTypeFix(SymbExecCType):
             todo = set()
 
             # Replace PC with value to match IR args
-            pc_fixed = {self.ir_arch.pc: m2_expr.ExprInt(instr.offset + instr.l, self.ir_arch.pc.size)}
+            pc_fixed = {self.lifter.pc: m2_expr.ExprInt(instr.offset + instr.l, self.lifter.pc.size)}
             inputs = tmp_r
             inputs.update(arg for arg in tmp_w if arg.is_mem())
             for arg in inputs:
@@ -209,14 +209,14 @@ class SymbExecCTypeFix(SymbExecCType):
             idc.set_cmt(offset, '\n'.join(value), 0)
             print("%x\n" % offset, '\n'.join(value))
 
-        return self.eval_expr(self.ir_arch.IRDst)
+        return self.eval_expr(self.lifter.IRDst)
 
 
 class CTypeEngineFixer(SymbExecCTypeFix):
 
-    def __init__(self, ir_arch, types_mngr, state, cst_propag_link):
+    def __init__(self, lifter, types_mngr, state, cst_propag_link):
         mychandler = MyCHandler(types_mngr, state.symbols)
-        super(CTypeEngineFixer, self).__init__(ir_arch,
+        super(CTypeEngineFixer, self).__init__(lifter,
                                                state.symbols,
                                                mychandler,
                                                cst_propag_link)
@@ -273,16 +273,16 @@ def analyse_function():
 
 
     lifter_model_callCallStackFixer = get_lifter_model_call_call_fixer(lifter_model_call)
-    ir_arch = lifter_model_callCallStackFixer(loc_db)
+    lifter = lifter_model_callCallStackFixer(loc_db)
 
     asmcfg = mdis.dis_multiblock(addr)
     # Generate IR
-    ircfg = ir_arch.new_ircfg_from_asmcfg(asmcfg)
+    ircfg = lifter.new_ircfg_from_asmcfg(asmcfg)
 
     cst_propag_link = {}
     if settings.cUnalias.value:
-        init_infos = {ir_arch.sp: ir_arch.arch.regs.regs_init[ir_arch.sp] }
-        cst_propag_link = propagate_cst_expr(ir_arch, ircfg, addr, init_infos)
+        init_infos = {lifter.sp: lifter.arch.regs.regs_init[lifter.sp] }
+        cst_propag_link = propagate_cst_expr(lifter, ircfg, addr, init_infos)
 
 
     types_mngr = get_types_mngr(settings.headerFile.value, settings.arch.value)
@@ -318,8 +318,8 @@ def analyse_function():
 
     assignblk_head = AssignBlock(
         [
-            ExprAssign(ir_arch.IRDst, ExprLoc(lbl_real_start, ir_arch.IRDst.size)),
-            ExprAssign(ir_arch.sp, ir_arch.arch.regs.regs_init[ir_arch.sp])
+            ExprAssign(lifter.IRDst, ExprLoc(lbl_real_start, lifter.IRDst.size)),
+            ExprAssign(lifter.sp, lifter.arch.regs.regs_init[lifter.sp])
         ],
         first_block.lines[0]
     )
@@ -340,9 +340,9 @@ def analyse_function():
         done.add((lbl, state))
         if lbl not in ircfg.blocks:
             continue
-        symbexec_engine = TypePropagationEngine(ir_arch, types_mngr, state)
+        symbexec_engine = TypePropagationEngine(lifter, types_mngr, state)
         symbexec_engine.run_block_at(ircfg, lbl)
-        symbexec_engine.del_mem_above_stack(ir_arch.sp)
+        symbexec_engine.del_mem_above_stack(lifter.sp)
 
         sons = ircfg.successors(lbl)
         for son in sons:
@@ -354,9 +354,9 @@ def analyse_function():
     for lbl, state in viewitems(states):
         if lbl not in ircfg.blocks:
             continue
-        symbexec_engine = CTypeEngineFixer(ir_arch, types_mngr, state, cst_propag_link)
+        symbexec_engine = CTypeEngineFixer(lifter, types_mngr, state, cst_propag_link)
         symbexec_engine.run_block_at(ircfg, lbl)
-        symbexec_engine.del_mem_above_stack(ir_arch.sp)
+        symbexec_engine.del_mem_above_stack(lifter.sp)
 
 
 if __name__ == "__main__":
diff --git a/example/ida/depgraph.py b/example/ida/depgraph.py
index 4a0fb1e9..1ab31688 100644
--- a/example/ida/depgraph.py
+++ b/example/ida/depgraph.py
@@ -129,9 +129,9 @@ Method to use:
         if value in self.stk_args:
             line = self.ircfg.blocks[self.loc_key][self.line_nb].instr
             arg_num = self.stk_args[value]
-            stk_high = m2_expr.ExprInt(idc.get_spd(line.offset), ir_arch.sp.size)
-            stk_off = m2_expr.ExprInt(self.lifter_model_call.sp.size // 8 * arg_num, ir_arch.sp.size)
-            element =  m2_expr.ExprMem(self.mn.regs.regs_init[ir_arch.sp] + stk_high + stk_off, self.lifter_model_call.sp.size)
+            stk_high = m2_expr.ExprInt(idc.get_spd(line.offset), lifter.sp.size)
+            stk_off = m2_expr.ExprInt(self.lifter_model_call.sp.size // 8 * arg_num, lifter.sp.size)
+            element =  m2_expr.ExprMem(self.mn.regs.regs_init[lifter.sp] + stk_high + stk_off, self.lifter_model_call.sp.size)
             element = expr_simp(element)
             # Force stack unaliasing
             self.stk_unalias_force = True
@@ -168,7 +168,7 @@ def clean_lines():
 
 def treat_element():
     "Display an element"
-    global graphs, comments, sol_nb, settings, addr, ir_arch, ircfg
+    global graphs, comments, sol_nb, settings, addr, lifter, ircfg
 
     try:
         graph = next(graphs)
@@ -195,7 +195,7 @@ def treat_element():
     if graph.has_loop:
         print('Graph has dependency loop: symbolic execution is inexact')
     else:
-        print("Possible value: %s" % next(iter(viewvalues(graph.emul(ir_arch)))))
+        print("Possible value: %s" % next(iter(viewvalues(graph.emul(lifter)))))
 
     for offset, elements in viewitems(comments):
         idc.set_cmt(offset, ", ".join(map(str, elements)), 0)
@@ -207,7 +207,7 @@ def next_element():
 
 
 def launch_depgraph():
-    global graphs, comments, sol_nb, settings, addr, ir_arch, ircfg
+    global graphs, comments, sol_nb, settings, addr, lifter, ircfg
     # Get the current function
     addr = idc.get_screen_ea()
     func = ida_funcs.get_func(addr)
@@ -220,7 +220,7 @@ def launch_depgraph():
     loc_db = LocationDB()
 
     mdis = dis_engine(bs, loc_db=loc_db, dont_dis_nulstart_bloc=True)
-    ir_arch = lifter_model_call(loc_db)
+    lifter = lifter_model_call(loc_db)
 
     # Populate symbols with ida names
     for ad, name in idautils.Names():
@@ -231,10 +231,10 @@ def launch_depgraph():
     asmcfg = mdis.dis_multiblock(func.start_ea)
 
     # Generate IR
-    ircfg = ir_arch.new_ircfg_from_asmcfg(asmcfg)
+    ircfg = lifter.new_ircfg_from_asmcfg(asmcfg)
 
     # Get settings
-    settings = depGraphSettingsForm(ir_arch, ircfg, mn)
+    settings = depGraphSettingsForm(lifter, ircfg, mn)
     settings.Execute()
 
     loc_key, elements, line_nb = settings.loc_key, settings.elements, settings.line_nb
@@ -245,14 +245,14 @@ def launch_depgraph():
         fix_stack = offset is not None and settings.unalias_stack
         for assignblk in irb:
             if fix_stack:
-                stk_high = m2_expr.ExprInt(idc.get_spd(assignblk.instr.offset), ir_arch.sp.size)
-                fix_dct = {ir_arch.sp: mn.regs.regs_init[ir_arch.sp] + stk_high}
+                stk_high = m2_expr.ExprInt(idc.get_spd(assignblk.instr.offset), lifter.sp.size)
+                fix_dct = {lifter.sp: mn.regs.regs_init[lifter.sp] + stk_high}
 
             new_assignblk = {}
             for dst, src in viewitems(assignblk):
                 if fix_stack:
                     src = src.replace_expr(fix_dct)
-                    if dst != ir_arch.sp:
+                    if dst != lifter.sp:
                         dst = dst.replace_expr(fix_dct)
                 dst, src = expr_simp(dst), expr_simp(src)
                 new_assignblk[dst] = src
diff --git a/example/ida/graph_ir.py b/example/ida/graph_ir.py
index c827bbe2..c7bc6201 100644
--- a/example/ida/graph_ir.py
+++ b/example/ida/graph_ir.py
@@ -103,14 +103,14 @@ def label_str(self):
     return "%s:%s" % (self.name, self.offset)
 
 
-def color_irblock(irblock, ir_arch):
+def color_irblock(irblock, lifter):
     out = []
-    lbl = idaapi.COLSTR("%s:" % ir_arch.loc_db.pretty_str(irblock.loc_key), idaapi.SCOLOR_INSN)
+    lbl = idaapi.COLSTR("%s:" % lifter.loc_db.pretty_str(irblock.loc_key), idaapi.SCOLOR_INSN)
     out.append(lbl)
     for assignblk in irblock:
         for dst, src in sorted(viewitems(assignblk)):
-            dst_f = expr2colorstr(dst, loc_db=ir_arch.loc_db)
-            src_f = expr2colorstr(src, loc_db=ir_arch.loc_db)
+            dst_f = expr2colorstr(dst, loc_db=lifter.loc_db)
+            src_f = expr2colorstr(src, loc_db=lifter.loc_db)
             line = idaapi.COLSTR("%s = %s" % (dst_f, src_f), idaapi.SCOLOR_INSN)
             out.append('    %s' % line)
         out.append("")
@@ -222,7 +222,7 @@ def build_graph(start_addr, type_graph, simplify=False, use_ida_stack=True, dont
     loc_db = LocationDB()
 
     mdis = dis_engine(bs, loc_db=loc_db)
-    ir_arch = IRADelModCallStack(loc_db)
+    lifter = IRADelModCallStack(loc_db)
 
 
     # populate symbols with ida names
@@ -247,7 +247,7 @@ def build_graph(start_addr, type_graph, simplify=False, use_ida_stack=True, dont
         open('asm_flow.dot', 'w').write(asmcfg.dot())
         print("generating IR... %x" % start_addr)
 
-    ircfg = ir_arch.new_ircfg_from_asmcfg(asmcfg)
+    ircfg = lifter.new_ircfg_from_asmcfg(asmcfg)
 
     if verbose:
         print("IR ok... %x" % start_addr)
@@ -271,7 +271,7 @@ def build_graph(start_addr, type_graph, simplify=False, use_ida_stack=True, dont
     head = list(entry_points)[0]
 
     if simplify:
-        ircfg_simplifier = IRCFGSimplifierCommon(ir_arch)
+        ircfg_simplifier = IRCFGSimplifierCommon(lifter)
         ircfg_simplifier.simplify(ircfg, head)
         title += " (simplified)"
 
@@ -302,7 +302,7 @@ def build_graph(start_addr, type_graph, simplify=False, use_ida_stack=True, dont
         if irblock is None:
             continue
         regs = {}
-        for reg in ir_arch.get_out_regs(irblock):
+        for reg in lifter.get_out_regs(irblock):
             regs[reg] = reg
         assignblks = list(irblock)
         new_assiblk = AssignBlock(regs, assignblks[-1].instr)
@@ -326,7 +326,7 @@ def build_graph(start_addr, type_graph, simplify=False, use_ida_stack=True, dont
                 ret = ssa.graph
             elif type_graph == TYPE_GRAPH_IRSSAUNSSA:
                 ircfg = self.ssa_to_unssa(ssa, head)
-                ircfg_simplifier = IRCFGSimplifierCommon(self.ir_arch)
+                ircfg_simplifier = IRCFGSimplifierCommon(self.lifter)
                 ircfg_simplifier.simplify(ircfg, head)
                 ret = ircfg
             else:
@@ -335,7 +335,7 @@ def build_graph(start_addr, type_graph, simplify=False, use_ida_stack=True, dont
 
 
     head = list(entry_points)[0]
-    simplifier = CustomIRCFGSimplifierSSA(ir_arch)
+    simplifier = CustomIRCFGSimplifierSSA(lifter)
     ircfg = simplifier.simplify(ircfg, head)
     open('final.dot', 'w').write(ircfg.dot())