diff options
| author | Fabrice Desclaux <fabrice.desclaux@cea.fr> | 2018-05-17 09:50:28 +0200 |
|---|---|---|
| committer | Fabrice Desclaux <fabrice.desclaux@cea.fr> | 2018-05-17 12:30:04 +0200 |
| commit | 53273fa3b21e618cd9cc745624787450bc441476 (patch) | |
| tree | 244766e52d6fd83917de117ee3c14b830de8cb84 /test/jitter/bad_block.py | |
| parent | 6f7fbfb8b57c6a7dc382361520ab34c6d428b881 (diff) | |
| download | miasm-53273fa3b21e618cd9cc745624787450bc441476.tar.gz miasm-53273fa3b21e618cd9cc745624787450bc441476.zip | |
Jitter: fix bad block management
Diffstat (limited to 'test/jitter/bad_block.py')
| -rw-r--r-- | test/jitter/bad_block.py | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/test/jitter/bad_block.py b/test/jitter/bad_block.py new file mode 100644 index 00000000..04c1f475 --- /dev/null +++ b/test/jitter/bad_block.py @@ -0,0 +1,44 @@ +import sys +from miasm2.jitter.csts import PAGE_READ, PAGE_WRITE, EXCEPT_UNK_MNEMO +from miasm2.analysis.machine import Machine + +def code_sentinelle(jitter): + jitter.run = False + jitter.pc = 0 + return True + +machine = Machine("x86_32") +jitter = machine.jitter(sys.argv[1]) + +jitter.init_stack() + +# nop +# mov eax, 0x42 +# XX +data = "90b842000000ffff90909090".decode('hex') + +# Will raise memory error at 0x40000006 + +error_raised = False +def raise_me(jitter): + global error_raised + error_raised = True + assert jitter.pc == 0x40000006 + return False + +jitter.add_exception_handler(EXCEPT_UNK_MNEMO, raise_me) + +run_addr = 0x40000000 + +jitter.vm.add_memory_page(run_addr, PAGE_READ | PAGE_WRITE, data) + +jitter.jit.log_regs = True +jitter.jit.log_mn = True +jitter.push_uint32_t(0x1337beef) + +jitter.add_breakpoint(0x1337beef, code_sentinelle) + +jitter.init_run(run_addr) +jitter.continue_run() + +assert error_raised is True |