diff options
| author | serpilliere <devnull@localhost> | 2011-09-26 10:05:33 +0200 |
|---|---|---|
| committer | serpilliere <devnull@localhost> | 2011-09-26 10:05:33 +0200 |
| commit | 574f1ca1d5fa53fa1b0aa3e071008811ca5bb40e (patch) | |
| tree | 57fa5acb72effe1f95baaaa58d8dc7b7c43a1bcc /example/disas_and_graph.py | |
| parent | 3f6e88545d556a5a5958659521efc622e4eaa56d (diff) | |
| download | miasm-574f1ca1d5fa53fa1b0aa3e071008811ca5bb40e.tar.gz miasm-574f1ca1d5fa53fa1b0aa3e071008811ca5bb40e.zip | |
add options to disasm graph
Diffstat (limited to 'example/disas_and_graph.py')
| -rwxr-xr-x | example/disas_and_graph.py | 23 |
1 files changed, 19 insertions, 4 deletions
diff --git a/example/disas_and_graph.py b/example/disas_and_graph.py index 57ea3f90..6f505df3 100755 --- a/example/disas_and_graph.py +++ b/example/disas_and_graph.py @@ -31,9 +31,9 @@ parser.add_option('-a', "--address", dest="address", metavar="ADDRESS", help="address to disasemble") parser.add_option('-m', "--architecture", dest="machine",metavar="MACHINE", help="architecture to use for disasm: arm, x86, ppc, java") -parser.add_option('-M', "--architecture-options", dest="machine-options", +parser.add_option('-M', "--architecture-options", dest="machine_options", metavar="MACHINEOPTS", - help="architecture options (16/32/64 bits, ...)") + help="architecture options (u16/u32/u64 bits, ...)") parser.add_option('-r', "--rawfile", dest="rawfile", action="store_true", default=False, metavar=None, help="dont use PE/ELF/CLASS autodetect, disasm raw file") @@ -116,7 +116,13 @@ elif data.startswith("\xca\xfe\xba\xbe"): else: - raise ValueError('cannot autodetect file type') + print 'WARNING cannot autodetect file type, using raw' + in_str = bin_stream.bin_stream(data) + if ad_to_dis == None: + ad_to_dis = 0 + else: + ad_to_dis = int(ad_to_dis, 16) + mnemo = ia32_arch.x86_mn if options.machine: @@ -148,8 +154,17 @@ for (n,f), ad in dll_dyn_funcs.items(): def my_disasm_callback(ad): + admode = opmode = u32 + if options.machine_options: + if options.machine_options in ['u16', 'u32']: + admode = opmode = options.machine_options + else: + raise ValueError('bad machine options') all_bloc = asmbloc.dis_bloc_all(mnemo, in_str, ad, set(), - symbol_pool=symbol_pool) + symbol_pool=symbol_pool, + amode = admode) + g = asmbloc.bloc2graph(all_bloc) + open('graph.txt', 'w').write(g) if mnemo == ia32_arch.x86_mn: for b in all_bloc: for l in b.lines: |