diff options
| author | Camille Mougey <commial@gmail.com> | 2019-03-07 14:37:07 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2019-03-07 14:37:07 +0100 |
| commit | 4c2320b46250a8d6f8774e1218544b72a154cd8e (patch) | |
| tree | b67e7b072439f84109bd39dad8ed7f3f135224f8 /example/disasm/full.py | |
| parent | eab809932871f91d6f4aa770fc321af9e156e0f5 (diff) | |
| parent | 26c1075723a02984da6d3bc7423c5c0c43082dc3 (diff) | |
| download | miasm-4c2320b46250a8d6f8774e1218544b72a154cd8e.tar.gz miasm-4c2320b46250a8d6f8774e1218544b72a154cd8e.zip | |
Merge pull request #990 from serpilliere/support_python2_python3
Support python2 python3
Diffstat (limited to 'example/disasm/full.py')
| -rw-r--r-- | example/disasm/full.py | 51 |
1 files changed, 28 insertions, 23 deletions
diff --git a/example/disasm/full.py b/example/disasm/full.py index 5161a299..f7268ad0 100644 --- a/example/disasm/full.py +++ b/example/disasm/full.py @@ -1,18 +1,21 @@ +from __future__ import print_function import logging from argparse import ArgumentParser from pdb import pm -from miasm2.analysis.binary import Container -from miasm2.core.asmblock import log_asmblock, AsmCFG -from miasm2.core.interval import interval -from miasm2.analysis.machine import Machine -from miasm2.analysis.data_flow import dead_simp, \ +from future.utils import viewitems, viewvalues + +from miasm.analysis.binary import Container +from miasm.core.asmblock import log_asmblock, AsmCFG +from miasm.core.interval import interval +from miasm.analysis.machine import Machine +from miasm.analysis.data_flow import dead_simp, \ DiGraphDefUse, ReachingDefinitions, \ replace_stack_vars, load_from_int, del_unused_edges -from miasm2.expression.simplifications import expr_simp -from miasm2.analysis.ssa import SSADiGraph -from miasm2.ir.ir import AssignBlock, IRBlock -from miasm2.analysis.simplifier import IRCFGSimplifierCommon, IRCFGSimplifierSSA +from miasm.expression.simplifications import expr_simp +from miasm.analysis.ssa import SSADiGraph +from miasm.ir.ir import AssignBlock, IRBlock +from miasm.analysis.simplifier import IRCFGSimplifierCommon, IRCFGSimplifierSSA log = logging.getLogger("dis") console_handler = logging.StreamHandler() @@ -35,7 +38,8 @@ parser.add_argument('-n', "--funcswatchdog", default=None, type=int, help="Maximum number of function to disassemble") parser.add_argument('-r', "--recurfunctions", action="store_true", help="Disassemble founded functions") -parser.add_argument('-v', "--verbose", action="count", help="Verbose mode") +parser.add_argument('-v', "--verbose", action="count", help="Verbose mode", + default=0) parser.add_argument('-g', "--gen_ir", action="store_true", help="Compute the intermediate representation") parser.add_argument('-z', "--dis-nulstart-block", action="store_true", @@ -43,7 +47,8 @@ parser.add_argument('-z', "--dis-nulstart-block", action="store_true", parser.add_argument('-l', "--dontdis-retcall", action="store_true", help="If set, disassemble only call destinations") parser.add_argument('-s', "--simplify", action="count", - help="Apply simplifications rules (liveness, graph simplification, ...)") + help="Apply simplifications rules (liveness, graph simplification, ...)", + default=0) parser.add_argument("--base-address", default=0, type=lambda x: int(x, 0), help="Base address of the input binary") @@ -92,7 +97,7 @@ log.info("import machine...") # Use the guessed architecture or the specified one arch = args.architecture if args.architecture else cont.arch if not arch: - print "Architecture recognition fail. Please specify it in arguments" + print("Architecture recognition fail. Please specify it in arguments") exit(-1) # Instance the arch-dependent machine @@ -177,7 +182,7 @@ while not finish and todo: # Generate dotty graph all_asmcfg = AsmCFG(mdis.loc_db) -for blocks in all_funcs_blocks.values(): +for blocks in viewvalues(all_funcs_blocks): all_asmcfg += blocks @@ -189,7 +194,7 @@ log.info('generate intervals') all_lines = [] total_l = 0 -print done_interval +print(done_interval) if args.image: log.info('build img') done_interval.show() @@ -199,7 +204,7 @@ for i, j in done_interval.intervals: all_lines.sort(key=lambda x: x.offset) -open('lines.dot', 'w').write('\n'.join([str(l) for l in all_lines])) +open('lines.dot', 'w').write('\n'.join(str(l) for l in all_lines)) log.info('total lines %s' % total_l) @@ -217,7 +222,7 @@ class IRADelModCallStack(ira): for assignblk in assignblks: dct = dict(assignblk) dct = { - dst:src for (dst, src) in dct.iteritems() if dst != self.sp + dst:src for (dst, src) in viewitems(dct) if dst != self.sp } out.append(AssignBlock(dct, assignblk.instr)) return out, extra @@ -238,21 +243,21 @@ if args.gen_ir: head = list(entry_points)[0] - for ad, asmcfg in all_funcs_blocks.items(): + for ad, asmcfg in viewitems(all_funcs_blocks): log.info("generating IR... %x" % ad) for block in asmcfg.blocks: ir_arch.add_asmblock_to_ircfg(block, ircfg) ir_arch_a.add_asmblock_to_ircfg(block, ircfg_a) log.info("Print blocks (without analyse)") - for label, block in ir_arch.blocks.iteritems(): - print block + for label, block in viewitems(ir_arch.blocks): + print(block) log.info("Gen Graph... %x" % ad) log.info("Print blocks (with analyse)") - for label, block in ir_arch_a.blocks.iteritems(): - print block + for label, block in viewitems(ir_arch_a.blocks): + print(block) if args.simplify > 0: log.info("Simplify...") @@ -289,7 +294,7 @@ if args.propagexpr: continue if reg in regs_todo: out[reg] = dst - return set(out.values()) + return set(viewvalues(out)) # Add dummy dependency to uncover out regs assignment for loc in ircfg_a.leaves(): @@ -317,7 +322,7 @@ if args.propagexpr: """ try: - _ = bs.getbytes(addr, size/8) + _ = bs.getbytes(addr, size // 8) except IOError: return False return True |