about summary refs log tree commit diff stats
path: root/example/disasm
diff options
context:
space:
mode:
Diffstat (limited to 'example/disasm')
-rw-r--r--example/disasm/callback.py20
-rw-r--r--example/disasm/dis_binary.py3
-rw-r--r--example/disasm/dis_binary_ir.py6
-rw-r--r--example/disasm/dis_binary_ira.py6
-rw-r--r--example/disasm/dis_x86_string.py5
-rw-r--r--example/disasm/full.py33
-rw-r--r--example/disasm/single_instr.py11
7 files changed, 49 insertions, 35 deletions
diff --git a/example/disasm/callback.py b/example/disasm/callback.py
index 02416b38..95c165d4 100644
--- a/example/disasm/callback.py
+++ b/example/disasm/callback.py
@@ -1,3 +1,4 @@
+from __future__ import print_function
 from miasm2.analysis.binary import Container
 from miasm2.analysis.machine import Machine
 from miasm2.core.asmblock import AsmConstraint
@@ -41,27 +42,28 @@ def cb_x86_callpop(cur_bloc, loc_db, *args, **kwargs):
 
 
 # Prepare a tiny shellcode
-shellcode = ''.join(["\xe8\x00\x00\x00\x00", # CALL $
-                     "X",                    # POP EAX
-                     "\xc3",                 # RET
-                     ])
+shellcode = (
+    b"\xe8\x00\x00\x00\x00" # CALL $
+    b"X"                    # POP EAX
+    b"\xc3"                 # RET
+)
 
 # Instantiate a x86 32 bit architecture
 machine = Machine("x86_32")
 cont = Container.from_string(shellcode)
 mdis = machine.dis_engine(cont.bin_stream, loc_db=cont.loc_db)
 
-print "Without callback:\n"
+print("Without callback:\n")
 asmcfg = mdis.dis_multiblock(0)
-print "\n".join(str(block) for block in asmcfg.blocks)
+print("\n".join(str(block) for block in asmcfg.blocks))
 
 # Enable callback
 mdis.dis_block_callback = cb_x86_callpop
 
-print "=" * 40
-print "With callback:\n"
+print("=" * 40)
+print("With callback:\n")
 asmcfg_after = mdis.dis_multiblock(0)
-print "\n".join(str(block) for block in asmcfg_after.blocks)
+print("\n".join(str(block) for block in asmcfg_after.blocks))
 
 # Ensure the callback has been called
 assert asmcfg.loc_key_to_block(asmcfg.heads()[0]).lines[0].name == "CALL"
diff --git a/example/disasm/dis_binary.py b/example/disasm/dis_binary.py
index 3e12ca91..4ac5ef26 100644
--- a/example/disasm/dis_binary.py
+++ b/example/disasm/dis_binary.py
@@ -1,3 +1,4 @@
+from __future__ import print_function
 import sys
 from miasm2.analysis.binary import Container
 from miasm2.analysis.machine import Machine
@@ -23,7 +24,7 @@ asmcfg = mdis.dis_multiblock(addr)
 
 # Display each basic blocks
 for block in asmcfg.blocks:
-    print block
+    print(block)
 
 # Output control flow graph in a dot file
 open('bin_cfg.dot', 'w').write(asmcfg.dot())
diff --git a/example/disasm/dis_binary_ir.py b/example/disasm/dis_binary_ir.py
index 197fccfd..ac642a36 100644
--- a/example/disasm/dis_binary_ir.py
+++ b/example/disasm/dis_binary_ir.py
@@ -1,4 +1,6 @@
+from __future__ import print_function
 import sys
+from future.utils import viewvalues
 from miasm2.analysis.binary import Container
 from miasm2.analysis.machine import Machine
 
@@ -28,8 +30,8 @@ ir_arch = machine.ir(mdis.loc_db)
 ircfg = ir_arch.new_ircfg_from_asmcfg(asmcfg)
 
 # Display each IR basic blocks
-for irblock in ircfg.blocks.values():
-    print irblock
+for irblock in viewvalues(ircfg.blocks):
+    print(irblock)
 
 # Output ir control flow graph in a dot file
 open('bin_ir_cfg.dot', 'w').write(ircfg.dot())
diff --git a/example/disasm/dis_binary_ira.py b/example/disasm/dis_binary_ira.py
index 726f353e..04bddbbb 100644
--- a/example/disasm/dis_binary_ira.py
+++ b/example/disasm/dis_binary_ira.py
@@ -1,4 +1,6 @@
+from __future__ import print_function
 import sys
+from future.utils import viewvalues
 from miasm2.analysis.binary import Container
 from miasm2.analysis.machine import Machine
 
@@ -30,8 +32,8 @@ ir_arch_analysis = machine.ira(mdis.loc_db)
 ircfg_analysis = ir_arch_analysis.new_ircfg_from_asmcfg(asmcfg)
 
 # Display each IR basic blocks
-for irblock in ircfg_analysis.blocks.values():
-    print irblock
+for irblock in viewvalues(ircfg_analysis.blocks):
+    print(irblock)
 
 # Output ir control flow graph in a dot file
 open('bin_ira_cfg.dot', 'w').write(ircfg_analysis.dot())
diff --git a/example/disasm/dis_x86_string.py b/example/disasm/dis_x86_string.py
index 8f919e4e..175e9264 100644
--- a/example/disasm/dis_x86_string.py
+++ b/example/disasm/dis_x86_string.py
@@ -1,8 +1,9 @@
+from __future__ import print_function
 from miasm2.analysis.binary import Container
 from miasm2.analysis.machine import Machine
 
 # The Container will provide a *bin_stream*, bytes source for the disasm engine
-cont = Container.from_string("\x83\xf8\x10\x74\x07\x89\xc6\x0f\x47\xc3\xeb\x08\x89\xc8\xe8\x31\x33\x22\x11\x40\xc3")
+cont = Container.from_string(b"\x83\xf8\x10\x74\x07\x89\xc6\x0f\x47\xc3\xeb\x08\x89\xc8\xe8\x31\x33\x22\x11\x40\xc3")
 
 # Instantiate a x86 32 bit architecture
 machine = Machine("x86_32")
@@ -16,7 +17,7 @@ asmcfg = mdis.dis_multiblock(0)
 
 # Display each basic blocks
 for block in asmcfg.blocks:
-    print block
+    print(block)
 
 # Output control flow graph in a dot file
 open('str_cfg.dot', 'w').write(asmcfg.dot())
diff --git a/example/disasm/full.py b/example/disasm/full.py
index 5161a299..de3f82ac 100644
--- a/example/disasm/full.py
+++ b/example/disasm/full.py
@@ -1,7 +1,10 @@
+from __future__ import print_function
 import logging
 from argparse import ArgumentParser
 from pdb import pm
 
+from future.utils import viewitems, viewvalues
+
 from miasm2.analysis.binary import Container
 from miasm2.core.asmblock import log_asmblock, AsmCFG
 from miasm2.core.interval import interval
@@ -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
diff --git a/example/disasm/single_instr.py b/example/disasm/single_instr.py
index d17e303f..70b37220 100644
--- a/example/disasm/single_instr.py
+++ b/example/disasm/single_instr.py
@@ -1,14 +1,15 @@
+from __future__ import print_function
 from miasm2.arch.x86.arch import mn_x86
 from miasm2.arch.x86.regs import EDX
 from miasm2.core.locationdb import LocationDB
 
 loc_db = LocationDB()
 l = mn_x86.fromstring('MOV EAX, EBX', loc_db, 32)
-print "instruction:", l
-print "arg:", l.args[0]
+print("instruction:", l)
+print("arg:", l.args[0])
 x = mn_x86.asm(l)
-print x
+print(x)
 l.args[0] = EDX
 y = mn_x86.asm(l)
-print y
-print mn_x86.dis(y[0], 32)
+print(y)
+print(mn_x86.dis(y[0], 32))