diff options
Diffstat (limited to 'example/ida/ctype_propagation.py')
| -rw-r--r-- | example/ida/ctype_propagation.py | 44 |
1 files changed, 24 insertions, 20 deletions
diff --git a/example/ida/ctype_propagation.py b/example/ida/ctype_propagation.py index 61bc747f..f333d69a 100644 --- a/example/ida/ctype_propagation.py +++ b/example/ida/ctype_propagation.py @@ -1,19 +1,22 @@ +from __future__ import print_function import ida_kernwin import idc import ida_funcs -from miasm2.core.bin_stream_ida import bin_stream_ida -from miasm2.expression import expression as m2_expr -from miasm2.expression.simplifications import expr_simp -from miasm2.ir.ir import IRBlock, AssignBlock -from miasm2.arch.x86.ctype import CTypeAMD64_unk, CTypeX86_unk -from miasm2.arch.msp430.ctype import CTypeMSP430_unk -from miasm2.core.objc import CTypesManagerNotPacked, ExprToAccessC, CHandler -from miasm2.core.ctypesmngr import CAstTypes -from miasm2.expression.expression import ExprLoc, ExprInt, ExprOp, ExprAssign -from miasm2.ir.symbexec_types import SymbExecCType -from miasm2.expression.parser import str_to_expr -from miasm2.analysis.cst_propag import add_state, propagate_cst_expr +from future.utils import viewitems + +from miasm.core.bin_stream_ida import bin_stream_ida +from miasm.expression import expression as m2_expr +from miasm.expression.simplifications import expr_simp +from miasm.ir.ir import IRBlock, AssignBlock +from miasm.arch.x86.ctype import CTypeAMD64_unk, CTypeX86_unk +from miasm.arch.msp430.ctype import CTypeMSP430_unk +from miasm.core.objc import CTypesManagerNotPacked, ExprToAccessC, CHandler +from miasm.core.ctypesmngr import CAstTypes +from miasm.expression.expression import ExprLoc, ExprInt, ExprOp, ExprAssign +from miasm.ir.symbexec_types import SymbExecCType +from miasm.expression.parser import str_to_expr +from miasm.analysis.cst_propag import add_state, propagate_cst_expr from utils import guess_machine @@ -198,11 +201,12 @@ class SymbExecCTypeFix(SymbExecCType): for c_str, c_type in self.chandler.expr_to_c_and_types(expr, self.symbols): expr = self.cst_propag_link.get((irb.loc_key, index), {}).get(expr, expr) offset2cmt.setdefault(instr.offset, set()).add( - "\n%s: %s\n%s" % (expr, c_str, c_type)) + "\n%s: %s\n%s" % (expr, c_str, c_type) + ) self.eval_updt_assignblk(assignblk) - for offset, value in offset2cmt.iteritems(): + for offset, value in viewitems(offset2cmt): idc.MakeComm(offset, '\n'.join(value)) - print "%x\n" % offset, '\n'.join(value) + print("%x\n" % offset, '\n'.join(value)) return self.eval_expr(self.ir_arch.IRDst) @@ -222,11 +226,11 @@ def get_ira_call_fixer(ira): class iraCallStackFixer(ira): def call_effects(self, ad, instr): - print hex(instr.offset), instr + print(hex(instr.offset), instr) stk_before = idc.GetSpd(instr.offset) stk_after = idc.GetSpd(instr.offset + instr.l) stk_diff = stk_after - stk_before - print hex(stk_diff) + print(hex(stk_diff)) call_assignblk = AssignBlock( [ ExprAssign(self.ret_reg, ExprOp('call_func_ret', ad)), @@ -299,8 +303,8 @@ def analyse_function(): ) ctype = mychandler.types_mngr.types_ast.ast_parse_declaration(ast.ext[0]) objc = types_mngr.get_objc(ctype) - print '=' * 20 - print expr, objc + print('=' * 20) + print(expr, objc) infos_types[expr] = set([objc]) # Add fake head @@ -344,7 +348,7 @@ def analyse_function(): symbexec_engine.get_state() ) - for lbl, state in states.iteritems(): + for lbl, state in viewitems(states): if lbl not in ircfg.blocks: continue symbexec_engine = CTypeEngineFixer(ir_arch, types_mngr, state, cst_propag_link) |