diff options
| author | Fabrice Desclaux <fabrice.desclaux@cea.fr> | 2018-12-06 07:47:38 +0100 |
|---|---|---|
| committer | Fabrice Desclaux <fabrice.desclaux@cea.fr> | 2018-12-10 11:10:45 +0100 |
| commit | 4de79169b5600040ef4af1dd2d02dca55933a884 (patch) | |
| tree | 41c52c9593a3d4a3864ea08d18793e840a7eaca3 /example/disasm/dis_binary_ira.py | |
| parent | 68e93fbd8a637e6a2d57e4ea26a1306b14744bd6 (diff) | |
| download | miasm-4de79169b5600040ef4af1dd2d02dca55933a884.tar.gz miasm-4de79169b5600040ef4af1dd2d02dca55933a884.zip | |
Add some simple disasm/ir examples
Diffstat (limited to 'example/disasm/dis_binary_ira.py')
| -rw-r--r-- | example/disasm/dis_binary_ira.py | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/example/disasm/dis_binary_ira.py b/example/disasm/dis_binary_ira.py new file mode 100644 index 00000000..c1bd5dc0 --- /dev/null +++ b/example/disasm/dis_binary_ira.py @@ -0,0 +1,37 @@ +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 IRA convertor +# The sub call are modelised by default operators +# call_func_ret and call_func_stack +ir_arch_analysis = machine.ira(mdis.loc_db) + +# Get the IR of the asmcfg +ircfg_analysis = ir_arch_analysis.new_ircfg_from_asmcfg(asmcfg) + +# Display each IR basic blocks +for irblock in ircfg_analysis.blocks.values(): + print irblock + +# Output ir control flow graph in a dot file +open('bin_ira_cfg.dot', 'w').write(ircfg_analysis.dot()) |