From 4de79169b5600040ef4af1dd2d02dca55933a884 Mon Sep 17 00:00:00 2001 From: Fabrice Desclaux Date: Thu, 6 Dec 2018 07:47:38 +0100 Subject: Add some simple disasm/ir examples --- example/disasm/dis_binary_ir.py | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 example/disasm/dis_binary_ir.py (limited to 'example/disasm/dis_binary_ir.py') diff --git a/example/disasm/dis_binary_ir.py b/example/disasm/dis_binary_ir.py new file mode 100644 index 00000000..6d98d692 --- /dev/null +++ b/example/disasm/dis_binary_ir.py @@ -0,0 +1,35 @@ +import sys +from miasm2.analysis.binary import Container +from miasm2.analysis.machine import Machine + +##################################### +# Common section from dis_binary.py # +##################################### + +fdesc = open(sys.argv[1], 'rb') + +cont = Container.from_stream(fdesc) + +machine = Machine(cont.arch) + +mdis = machine.dis_engine(cont.bin_stream, loc_db=cont.loc_db) + +addr = cont.entry_point +asmcfg = mdis.dis_multiblock(addr) + +##################################### +# End common section # +##################################### + +# Get an IR convertor +ir_arch = machine.ir(mdis.loc_db) + +# Get the IR of the asmcfg +ircfg = ir_arch.new_ircfg_from_asmcfg(asmcfg) + +# Display each IR basic blocks +for irblock in ircfg.blocks.values(): + print irblock + +# Output ir control flow graph in a dot file +open('bin_ir_cfg.dot', 'w').write(ircfg.dot()) -- cgit 1.4.1