diff options
| author | Camille Mougey <commial@gmail.com> | 2018-12-10 12:22:52 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2018-12-10 12:22:52 +0100 |
| commit | c392534a4d51759cf8ac349ea873e25b424f7472 (patch) | |
| tree | 2dd12a15c7f3a038471e566d4a971b5934084a17 /example/disasm/dis_binary.py | |
| parent | 68e93fbd8a637e6a2d57e4ea26a1306b14744bd6 (diff) | |
| parent | 5e620f04a458a7ff3fb72673f887c9423a40c1aa (diff) | |
| download | miasm-c392534a4d51759cf8ac349ea873e25b424f7472.tar.gz miasm-c392534a4d51759cf8ac349ea873e25b424f7472.zip | |
Merge pull request #898 from serpilliere/add_dis_examples
Add dis examples
Diffstat (limited to 'example/disasm/dis_binary.py')
| -rw-r--r-- | example/disasm/dis_binary.py | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/example/disasm/dis_binary.py b/example/disasm/dis_binary.py new file mode 100644 index 00000000..3e12ca91 --- /dev/null +++ b/example/disasm/dis_binary.py @@ -0,0 +1,29 @@ +import sys +from miasm2.analysis.binary import Container +from miasm2.analysis.machine import Machine + +fdesc = open(sys.argv[1], 'rb') + +# The Container will provide a *bin_stream*, bytes source for the disasm engine +# It will prodive a view from a PE or an ELF. +cont = Container.from_stream(fdesc) + +# The Machine, instantiated with the detected architecture, will provide tools +# (disassembler, etc.) to work with this architecture +machine = Machine(cont.arch) + +# Instantiate a disassembler engine, using the previous bin_stream and its +# associated location DB. The assembly listing will use the binary symbols +mdis = machine.dis_engine(cont.bin_stream, loc_db=cont.loc_db) + +# Run a recursive traversal disassembling from the entry point +# (do not follow sub functions by default) +addr = cont.entry_point +asmcfg = mdis.dis_multiblock(addr) + +# Display each basic blocks +for block in asmcfg.blocks: + print block + +# Output control flow graph in a dot file +open('bin_cfg.dot', 'w').write(asmcfg.dot()) |