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_x86_string.py | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 example/disasm/dis_x86_string.py (limited to 'example/disasm/dis_x86_string.py') diff --git a/example/disasm/dis_x86_string.py b/example/disasm/dis_x86_string.py new file mode 100644 index 00000000..8f919e4e --- /dev/null +++ b/example/disasm/dis_x86_string.py @@ -0,0 +1,22 @@ +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") + +# Instantiate a x86 32 bit architecture +machine = Machine("x86_32") + +# Instantiate a disassembler engine, using the previous bin_stream and its +# associated location DB. +mdis = machine.dis_engine(cont.bin_stream, loc_db=cont.loc_db) + +# Run a recursive traversal disassembling from address 0 +asmcfg = mdis.dis_multiblock(0) + +# Display each basic blocks +for block in asmcfg.blocks: + print block + +# Output control flow graph in a dot file +open('str_cfg.dot', 'w').write(asmcfg.dot()) -- cgit 1.4.1