about summary refs log tree commit diff stats
path: root/example/disasm/dis_x86_string.py
diff options
context:
space:
mode:
authorCamille Mougey <commial@gmail.com>2018-12-10 12:22:52 +0100
committerGitHub <noreply@github.com>2018-12-10 12:22:52 +0100
commitc392534a4d51759cf8ac349ea873e25b424f7472 (patch)
tree2dd12a15c7f3a038471e566d4a971b5934084a17 /example/disasm/dis_x86_string.py
parent68e93fbd8a637e6a2d57e4ea26a1306b14744bd6 (diff)
parent5e620f04a458a7ff3fb72673f887c9423a40c1aa (diff)
downloadmiasm-c392534a4d51759cf8ac349ea873e25b424f7472.tar.gz
miasm-c392534a4d51759cf8ac349ea873e25b424f7472.zip
Merge pull request #898 from serpilliere/add_dis_examples
Add dis examples
Diffstat (limited to 'example/disasm/dis_x86_string.py')
-rw-r--r--example/disasm/dis_x86_string.py22
1 files changed, 22 insertions, 0 deletions
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())