about summary refs log tree commit diff stats
path: root/example/symbol_exec/single_instr.py
diff options
context:
space:
mode:
authorAjax <commial@gmail.com>2015-11-09 17:06:10 +0100
committerAjax <commial@gmail.com>2015-11-09 17:06:10 +0100
commit6feedf1203bc6cc6b2feb1be57f5a8e1de8fae5c (patch)
tree0c7b04d0d30c1a4528fc29bea6bdc8d91e240099 /example/symbol_exec/single_instr.py
parentf266a5093fe9e323ea9bf489208693b10200f1af (diff)
downloadmiasm-6feedf1203bc6cc6b2feb1be57f5a8e1de8fae5c.tar.gz
miasm-6feedf1203bc6cc6b2feb1be57f5a8e1de8fae5c.zip
Example/SymbolExec: write code more arch-independent
Diffstat (limited to 'example/symbol_exec/single_instr.py')
-rw-r--r--example/symbol_exec/single_instr.py30
1 files changed, 14 insertions, 16 deletions
diff --git a/example/symbol_exec/single_instr.py b/example/symbol_exec/single_instr.py
index 927b7aec..e4dcdba6 100644
--- a/example/symbol_exec/single_instr.py
+++ b/example/symbol_exec/single_instr.py
@@ -1,35 +1,33 @@
 # Minimalist Symbol Exec example
-from miasm2.core.bin_stream                 import bin_stream_str
-from miasm2.arch.x86.arch                   import mn_x86
-from miasm2.arch.x86.ira                    import ir_a_x86_32
-from miasm2.arch.x86.regs                   import regs_init
-from miasm2.ir.symbexec                     import symbexec
-from miasm2.arch.x86.disasm                 import dis_x86_32 as dis_engine
-from miasm2.expression.expression           import ExprId
+from miasm2.core.bin_stream import bin_stream_str
+from miasm2.ir.symbexec import symbexec
+from miasm2.analysis.machine import Machine
 
 START_ADDR = 0
+machine = Machine("x86_32")
 
 # Assemble and disassemble a MOV
 ## Ensure that attributes 'offset' and 'l' are set
-line = mn_x86.fromstring("MOV EAX, EBX", 32)
-asm = mn_x86.asm(line)[0]
+line = machine.mn.fromstring("MOV EAX, EBX", 32)
+asm = machine.mn.asm(line)[0]
 
 # Get back block
 bin_stream = bin_stream_str(asm)
-mdis = dis_engine(bin_stream)
+mdis = machine.dis_engine(bin_stream)
 asm_block = mdis.dis_bloc(START_ADDR)
 
 # Translate ASM -> IR
-ir = ir_a_x86_32(mdis.symbol_pool)
-ir.add_bloc(asm_block)
+ira = machine.ira(mdis.symbol_pool)
+ira.add_bloc(asm_block)
 
 # Instanciate a Symbolic Execution engine with default value for registers
 ## EAX = EAX_init, ...
-symb = symbexec(ir, regs_init)
+symbols_init = ira.arch.regs.regs_init
+symb = symbexec(ira, symbols_init)
 
 # Emulate one IR basic block
 ## Emulation of several basic blocks can be done through .emul_ir_blocs
-cur_addr = symb.emul_ir_bloc(ir, START_ADDR)
+cur_addr = symb.emul_ir_bloc(ira, START_ADDR)
 
 # Modified elements
 print 'Modified registers:'
@@ -38,6 +36,6 @@ print 'Modified memory (should be empty):'
 symb.dump_mem()
 
 # Check final status
-eax, ebx = map(ExprId, ["EAX", "EBX"])
-assert symb.symbols[eax] == regs_init[ebx]
+eax, ebx = ira.arch.regs.EAX, ira.arch.regs.EBX
+assert symb.symbols[eax] == symbols_init[ebx]
 assert eax in symb.modified()