about summary refs log tree commit diff stats
path: root/example
diff options
context:
space:
mode:
Diffstat (limited to 'example')
-rw-r--r--example/disasm/full.py5
-rw-r--r--example/expression/simplification_add.py5
-rw-r--r--example/expression/simplification_tools.py5
-rw-r--r--example/expression/solve_condition_stp.py6
-rw-r--r--example/ida/depgraph.py28
-rw-r--r--example/ida/graph_ir.py15
-rw-r--r--example/jitter/sandbox_elf_aarch64l.py9
-rw-r--r--example/jitter/sandbox_pe_x86_32.py6
-rw-r--r--example/jitter/sandbox_pe_x86_64.py6
-rw-r--r--example/jitter/unpack_upx.py6
-rw-r--r--example/jitter/x86_32.py6
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",