diff options
Diffstat (limited to 'example')
| -rw-r--r-- | example/disasm/full.py | 5 | ||||
| -rw-r--r-- | example/expression/simplification_add.py | 5 | ||||
| -rw-r--r-- | example/expression/simplification_tools.py | 5 | ||||
| -rw-r--r-- | example/expression/solve_condition_stp.py | 6 | ||||
| -rw-r--r-- | example/ida/depgraph.py | 28 | ||||
| -rw-r--r-- | example/ida/graph_ir.py | 15 | ||||
| -rw-r--r-- | example/jitter/sandbox_elf_aarch64l.py | 9 | ||||
| -rw-r--r-- | example/jitter/sandbox_pe_x86_32.py | 6 | ||||
| -rw-r--r-- | example/jitter/sandbox_pe_x86_64.py | 6 | ||||
| -rw-r--r-- | example/jitter/unpack_upx.py | 6 | ||||
| -rw-r--r-- | example/jitter/x86_32.py | 6 |
11 files changed, 29 insertions, 68 deletions
diff --git a/example/disasm/full.py b/example/disasm/full.py index 33903282..3bfb7658 100644 --- a/example/disasm/full.py +++ b/example/disasm/full.py @@ -1,4 +1,3 @@ -import os import logging from argparse import ArgumentParser from pdb import pm @@ -17,10 +16,6 @@ console_handler.setFormatter(logging.Formatter("%(levelname)-5s: %(message)s")) log.addHandler(console_handler) log.setLevel(logging.INFO) -filename = os.environ.get('PYTHONSTARTUP') -if filename and os.path.isfile(filename): - execfile(filename) - parser = ArgumentParser("Disassemble a binary") parser.add_argument('filename', help="File to disassemble") diff --git a/example/expression/simplification_add.py b/example/expression/simplification_add.py index 06b683fe..41720f3a 100644 --- a/example/expression/simplification_add.py +++ b/example/expression/simplification_add.py @@ -1,11 +1,6 @@ import miasm2.expression.expression as m2_expr from miasm2.expression.simplifications import expr_simp from pdb import pm -import os - -filename = os.environ.get('PYTHONSTARTUP') -if filename and os.path.isfile(filename): - execfile(filename) print """ Expression simplification demo: Adding a simplification: diff --git a/example/expression/simplification_tools.py b/example/expression/simplification_tools.py index 6a4ff715..258b5ce4 100644 --- a/example/expression/simplification_tools.py +++ b/example/expression/simplification_tools.py @@ -1,10 +1,5 @@ from miasm2.expression.expression import * from pdb import pm -import os - -filename = os.environ.get('PYTHONSTARTUP') -if filename and os.path.isfile(filename): - execfile(filename) print """ Expression simplification demo. diff --git a/example/expression/solve_condition_stp.py b/example/expression/solve_condition_stp.py index 0ca17faa..27b0512f 100644 --- a/example/expression/solve_condition_stp.py +++ b/example/expression/solve_condition_stp.py @@ -1,4 +1,3 @@ -import os import sys import subprocess from collections import defaultdict @@ -19,11 +18,6 @@ from miasm2.core import parse_asm from miasm2.arch.x86.disasm import dis_x86_32 as dis_engine -filename = os.environ.get('PYTHONSTARTUP') -if filename and os.path.isfile(filename): - execfile(filename) - - mn = mn_x86 parser = OptionParser(usage="usage: %prog [options] file") diff --git a/example/ida/depgraph.py b/example/ida/depgraph.py index faec2857..cbd0cf0f 100644 --- a/example/ida/depgraph.py +++ b/example/ida/depgraph.py @@ -7,6 +7,7 @@ from miasm2.expression import expression as m2_expr from miasm2.expression.simplifications import expr_simp from miasm2.analysis.depgraph import DependencyGraph +from miasm2.ir.ir import AssignBlock from utils import guess_machine @@ -21,10 +22,18 @@ class depGraphSettingsForm(Form): self.stk_unalias_force = False self.address = ScreenEA() - cur_block = list(ira.getby_offset(self.address))[0] - for line_nb, l in enumerate(cur_block.lines): - if l.offset == self.address: + cur_block = None + for block in ira.getby_offset(self.address): + if block.label.offset is not None: + # Only one block non-generated + assert cur_block is None + cur_block = block + assert cur_block is not None + line_nb = None + for line_nb, assignblk in enumerate(cur_block.irs): + if assignblk.instr.offset == self.address: break + assert line_nb is not None cur_label = str(cur_block.label) labels = sorted(map(str, ira.blocks.keys())) regs = sorted(ir_arch.arch.regs.all_regs_ids_byname.keys()) @@ -102,7 +111,7 @@ Method to use: def elements(self): value = self.cbReg.value if value in self.stk_args: - line = self.ira.blocks[self.label].lines[self.line_nb] + line = self.ira.blocks[self.label].irs[self.line_nb].instr arg_num = self.stk_args[value] stk_high = m2_expr.ExprInt(GetSpd(line.offset), ir_arch.sp.size) stk_off = m2_expr.ExprInt(self.ira.sp.size/8 * arg_num, ir_arch.sp.size) @@ -167,17 +176,18 @@ for irb in ir_arch.blocks.values(): fix_stack = irb.label.offset is not None and settings.unalias_stack for i, assignblk in enumerate(irb.irs): if fix_stack: - stk_high = m2_expr.ExprInt(GetSpd(irb.lines[i].offset), ir_arch.sp.size) + stk_high = m2_expr.ExprInt(GetSpd(irb.irs[i].instr.offset), ir_arch.sp.size) fix_dct = {ir_arch.sp: mn.regs.regs_init[ir_arch.sp] + stk_high} - for dst, src in assignblk.items(): - del(assignblk[dst]) + new_assignblk = {} + for dst, src in assignblk.iteritems(): if fix_stack: src = src.replace_expr(fix_dct) if dst != ir_arch.sp: dst = dst.replace_expr(fix_dct) dst, src = expr_simp(dst), expr_simp(src) - assignblk[dst] = src + new_assignblk[dst] = src + irb.irs[i] = AssignBlock(new_assignblk, instr=assignblk.instr) # Get dependency graphs dg = settings.depgraph @@ -215,7 +225,7 @@ def treat_element(): for node in graph.relevant_nodes: try: - offset = ir_arch.blocks[node.label].lines[node.line_nb].offset + offset = ir_arch.blocks[node.label].irs[node.line_nb].instr.offset except IndexError: print "Unable to highlight %s" % node continue diff --git a/example/ida/graph_ir.py b/example/ida/graph_ir.py index d2552c82..6ff4304a 100644 --- a/example/ida/graph_ir.py +++ b/example/ida/graph_ir.py @@ -11,6 +11,8 @@ from miasm2.expression.expression import * from miasm2.analysis.data_analysis import inter_bloc_flow, \ intra_bloc_flow_symbexec from miasm2.analysis.data_flow import dead_simp +from miasm2.ir.ir import AssignBlock + from utils import guess_machine, expr2colorstr @@ -133,12 +135,13 @@ for block in ab: print "IR ok... %x" % ad -for irb in ir_arch.blocks.values(): - for assignblk in irb.irs: - for dst, src in assignblk.items(): - del(assignblk[dst]) - dst, src = expr_simp(dst), expr_simp(src) - assignblk[dst] = src +for irb in ir_arch.blocks.itervalues(): + for i, assignblk in enumerate(irb.irs): + new_assignblk = { + expr_simp(dst): expr_simp(src) + for dst, src in assignblk.iteritems() + } + irb.irs[i] = AssignBlock(new_assignblk, instr=assignblk.instr) out = ir_arch.graph.dot() open(os.path.join(tempfile.gettempdir(), 'graph.dot'), 'wb').write(out) diff --git a/example/jitter/sandbox_elf_aarch64l.py b/example/jitter/sandbox_elf_aarch64l.py index 0a4c88db..0f028876 100644 --- a/example/jitter/sandbox_elf_aarch64l.py +++ b/example/jitter/sandbox_elf_aarch64l.py @@ -1,14 +1,7 @@ -import os +import logging from pdb import pm from miasm2.analysis.sandbox import Sandbox_Linux_aarch64l from miasm2.jitter.jitload import log_func -import logging - - -# Python auto completion -filename = os.environ.get('PYTHONSTARTUP') -if filename and os.path.isfile(filename): - execfile(filename) # Insert here user defined methods diff --git a/example/jitter/sandbox_pe_x86_32.py b/example/jitter/sandbox_pe_x86_32.py index 738e0778..3a627b19 100644 --- a/example/jitter/sandbox_pe_x86_32.py +++ b/example/jitter/sandbox_pe_x86_32.py @@ -1,12 +1,6 @@ -import os from pdb import pm from miasm2.analysis.sandbox import Sandbox_Win_x86_32 -# Python auto completion -filename = os.environ.get('PYTHONSTARTUP') -if filename and os.path.isfile(filename): - execfile(filename) - # Insert here user defined methods # Parse arguments diff --git a/example/jitter/sandbox_pe_x86_64.py b/example/jitter/sandbox_pe_x86_64.py index 8d9db88e..773c54b9 100644 --- a/example/jitter/sandbox_pe_x86_64.py +++ b/example/jitter/sandbox_pe_x86_64.py @@ -1,12 +1,6 @@ -import os from pdb import pm from miasm2.analysis.sandbox import Sandbox_Win_x86_64 -# Python auto completion -filename = os.environ.get('PYTHONSTARTUP') -if filename and os.path.isfile(filename): - execfile(filename) - # Insert here user defined methods # Parse arguments diff --git a/example/jitter/unpack_upx.py b/example/jitter/unpack_upx.py index d95c5a18..8160e51b 100644 --- a/example/jitter/unpack_upx.py +++ b/example/jitter/unpack_upx.py @@ -4,12 +4,6 @@ from pdb import pm from elfesteem import pe from miasm2.analysis.sandbox import Sandbox_Win_x86_32 - -filename = os.environ.get('PYTHONSTARTUP') -if filename and os.path.isfile(filename): - execfile(filename) - - # User defined methods def kernel32_GetProcAddress(jitter): diff --git a/example/jitter/x86_32.py b/example/jitter/x86_32.py index 91244bf6..1409d7aa 100644 --- a/example/jitter/x86_32.py +++ b/example/jitter/x86_32.py @@ -1,15 +1,9 @@ -import os from argparse import ArgumentParser from miasm2.jitter.csts import PAGE_READ, PAGE_WRITE from miasm2.analysis.machine import Machine from pdb import pm - -filename = os.environ.get('PYTHONSTARTUP') -if filename and os.path.isfile(filename): - execfile(filename) - parser = ArgumentParser(description="x86 32 basic Jitter") parser.add_argument("filename", help="x86 32 shellcode filename") parser.add_argument("-j", "--jitter", |