diff options
| author | Fabrice Desclaux <fabrice.desclaux@cea.fr> | 2020-12-07 17:28:54 +0100 |
|---|---|---|
| committer | Fabrice Desclaux <fabrice.desclaux@cea.fr> | 2020-12-24 17:15:46 +0100 |
| commit | e6ec952904419c73531ab62443ade23985317daf (patch) | |
| tree | cb7063e3958c2b7e65d29cb25bb38a64e6a2f060 /example/symbol_exec | |
| parent | f178c253c4665cb3e495073168dc244782d07c17 (diff) | |
| download | miasm-e6ec952904419c73531ab62443ade23985317daf.tar.gz miasm-e6ec952904419c73531ab62443ade23985317daf.zip | |
Rename ira => LifterModelCall
Diffstat (limited to 'example/symbol_exec')
| -rw-r--r-- | example/symbol_exec/depgraph.py | 2 | ||||
| -rw-r--r-- | example/symbol_exec/dse_crackme.py | 22 | ||||
| -rw-r--r-- | example/symbol_exec/single_instr.py | 10 |
3 files changed, 17 insertions, 17 deletions
diff --git a/example/symbol_exec/depgraph.py b/example/symbol_exec/depgraph.py index 8285452e..62190e6b 100644 --- a/example/symbol_exec/depgraph.py +++ b/example/symbol_exec/depgraph.py @@ -52,7 +52,7 @@ for element in args.element: raise ValueError("Unknown element '%s'" % element) mdis = machine.dis_engine(cont.bin_stream, dont_dis_nulstart_bloc=True, loc_db=loc_db) -ir_arch = machine.ira(loc_db) +ir_arch = machine.lifter_model_call(loc_db) # Common argument forms init_ctx = {} diff --git a/example/symbol_exec/dse_crackme.py b/example/symbol_exec/dse_crackme.py index e014ada2..cdaf5a1a 100644 --- a/example/symbol_exec/dse_crackme.py +++ b/example/symbol_exec/dse_crackme.py @@ -137,7 +137,7 @@ FILE_stream = ExprId("FILE_0", 64) FILE_size = ExprId("FILE_0_size", 64) def xxx_fopen_symb(dse): - regs = dse.ir_arch.arch.regs + regs = dse.lifter.arch.regs fname_addr = dse.eval_expr(regs.RDI) mode = dse.eval_expr(regs.RSI) assert fname_addr.is_int() @@ -151,13 +151,13 @@ def xxx_fopen_symb(dse): dse.update_state({ regs.RSP: dse.eval_expr(regs.RSP + ExprInt(8, regs.RSP.size)), - dse.ir_arch.IRDst: ret_addr, + dse.lifter.IRDst: ret_addr, regs.RIP: ret_addr, regs.RAX: ret_value, }) def xxx_fread_symb(dse): - regs = dse.ir_arch.arch.regs + regs = dse.lifter.arch.regs ptr = dse.eval_expr(regs.RDI) size = dse.eval_expr(regs.RSI) nmemb = dse.eval_expr(regs.RDX) @@ -179,21 +179,21 @@ def xxx_fread_symb(dse): update.update({ regs.RSP: dse.symb.eval_expr(regs.RSP + ExprInt(8, regs.RSP.size)), - dse.ir_arch.IRDst: ret_addr, + dse.lifter.IRDst: ret_addr, regs.RIP: ret_addr, regs.RAX: ret_value, }) dse.update_state(update) def xxx_fclose_symb(dse): - regs = dse.ir_arch.arch.regs + regs = dse.lifter.arch.regs stream = dse.eval_expr(regs.RDI) FILE_to_info_symb[stream].close() ret_addr = ExprInt(dse.jitter.get_stack_arg(0), regs.RIP.size) dse.update_state({ regs.RSP: dse.symb.eval_expr(regs.RSP + ExprInt(8, regs.RSP.size)), - dse.ir_arch.IRDst: ret_addr, + dse.lifter.IRDst: ret_addr, regs.RIP: ret_addr, regs.RAX: ExprInt(0, regs.RAX.size), }) @@ -203,7 +203,7 @@ def xxx_fclose_symb(dse): def xxx___libc_start_main_symb(dse): # ['RDI', 'RSI', 'RDX', 'RCX', 'R8', 'R9'] # main, argc, argv, ... - regs = dse.ir_arch.arch.regs + regs = dse.lifter.arch.regs top_stack = dse.eval_expr(regs.RSP) main_addr = dse.eval_expr(regs.RDI) argc = dse.eval_expr(regs.RSI) @@ -214,8 +214,8 @@ def xxx___libc_start_main_symb(dse): ExprMem(top_stack, 64): hlt_addr, regs.RDI: argc, regs.RSI: argv, - dse.ir_arch.IRDst: main_addr, - dse.ir_arch.pc: main_addr, + dse.lifter.IRDst: main_addr, + dse.lifter.pc: main_addr, }) # Stop the execution on puts and get back the corresponding string @@ -248,9 +248,9 @@ dse.attach(sb.jitter) # Update the jitter state: df is read, but never set # Approaches: specific or generic # - Specific: -# df_value = ExprInt(sb.jitter.cpu.df, dse.ir_arch.arch.regs.df.size) +# df_value = ExprInt(sb.jitter.cpu.df, dse.lifter.arch.regs.df.size) # dse.update_state({ -# dse.ir_arch.arch.regs.df: df_value +# dse.lifter.arch.regs.df: df_value # }) # - Generic: dse.update_state_from_concrete() diff --git a/example/symbol_exec/single_instr.py b/example/symbol_exec/single_instr.py index 789252df..0aabbf8b 100644 --- a/example/symbol_exec/single_instr.py +++ b/example/symbol_exec/single_instr.py @@ -21,12 +21,12 @@ mdis.lines_wd = 1 asm_block = mdis.dis_block(START_ADDR) # Translate ASM -> IR -ira = machine.ira(mdis.loc_db) -ircfg = ira.new_ircfg() -ira.add_asmblock_to_ircfg(asm_block, ircfg) +lifter_model_call = machine.lifter_model_call(mdis.loc_db) +ircfg = lifter_model_call.new_ircfg() +lifter_model_call.add_asmblock_to_ircfg(asm_block, ircfg) # Instantiate a Symbolic Execution engine with default value for registers -symb = SymbolicExecutionEngine(ira) +symb = SymbolicExecutionEngine(lifter_model_call) # Emulate one IR basic block ## Emulation of several basic blocks can be done through .emul_ir_blocks @@ -39,6 +39,6 @@ print('Modified memory (should be empty):') symb.dump(ids=False) # Check final status -eax, ebx = ira.arch.regs.EAX, ira.arch.regs.EBX +eax, ebx = lifter_model_call.arch.regs.EAX, lifter_model_call.arch.regs.EBX assert symb.symbols[eax] == ebx assert eax in symb.symbols |