diff options
| author | Camille Mougey <commial@gmail.com> | 2018-03-28 15:22:51 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2018-03-28 15:22:51 +0200 |
| commit | 5b07d8c8828bdaba0c9a4ce63e978441d5dab525 (patch) | |
| tree | aa61c08b6da9a914c0ec5d4f0a516d6f365d5da3 | |
| parent | 92e508bc505fc8c23cc2a50ee6abfb03ccfa3ce4 (diff) | |
| parent | 719266807687e0a9a5b4f194d7c2220974a2e83f (diff) | |
| download | miasm-5b07d8c8828bdaba0c9a4ce63e978441d5dab525.tar.gz miasm-5b07d8c8828bdaba0c9a4ce63e978441d5dab525.zip | |
Merge pull request #707 from serpilliere/fix_bp_memory_name
Fix memory breakpoint name
| -rw-r--r-- | miasm2/analysis/debugging.py | 2 | ||||
| -rw-r--r-- | miasm2/jitter/csts.py | 4 | ||||
| -rw-r--r-- | miasm2/jitter/jitload.py | 4 | ||||
| -rw-r--r-- | miasm2/jitter/vm_mngr.c | 10 | ||||
| -rw-r--r-- | miasm2/jitter/vm_mngr.h | 4 | ||||
| -rw-r--r-- | miasm2/jitter/vm_mngr_py.c | 2 | ||||
| -rw-r--r-- | test/jitter/test_post_instr.py | 6 |
7 files changed, 18 insertions, 14 deletions
diff --git a/miasm2/analysis/debugging.py b/miasm2/analysis/debugging.py index d970f848..fc03eb17 100644 --- a/miasm2/analysis/debugging.py +++ b/miasm2/analysis/debugging.py @@ -87,7 +87,7 @@ class Debugguer(object): self.myjit.add_breakpoint(addr, func) def init_memory_breakpoint(self): - "Set exception handler on EXCEPT_BREAKPOINT_INTERN" + "Set exception handler on EXCEPT_BREAKPOINT_MEMORY" raise NotImplementedError("Not implemented") def add_memory_breakpoint(self, addr, size, read=False, write=False): diff --git a/miasm2/jitter/csts.py b/miasm2/jitter/csts.py index 56179c92..9c9919fc 100644 --- a/miasm2/jitter/csts.py +++ b/miasm2/jitter/csts.py @@ -9,7 +9,9 @@ EXCEPT_CODE_AUTOMOD = (1 << 0) EXCEPT_SOFT_BP = (1 << 1) EXCEPT_INT_XX = (1 << 2) EXCEPT_SPR_ACCESS = (1 << 3) -EXCEPT_BREAKPOINT_INTERN = (1 << 10) +EXCEPT_BREAKPOINT_MEMORY = (1 << 10) +# Deprecated +EXCEPT_BREAKPOINT_INTERN = EXCEPT_BREAKPOINT_MEMORY EXCEPT_ACCESS_VIOL = ((1 << 14) | EXCEPT_DO_NOT_UPDATE_PC) EXCEPT_DIV_BY_ZERO = ((1 << 16) | EXCEPT_DO_NOT_UPDATE_PC) diff --git a/miasm2/jitter/jitload.py b/miasm2/jitter/jitload.py index a14334cb..499d6c47 100644 --- a/miasm2/jitter/jitload.py +++ b/miasm2/jitter/jitload.py @@ -149,7 +149,7 @@ class ExceptionHandle(): @classmethod def memoryBreakpoint(cls): - return cls(EXCEPT_BREAKPOINT_INTERN) + return cls(EXCEPT_BREAKPOINT_MEMORY) def __eq__(self, to_cmp): if not isinstance(to_cmp, ExceptionHandle): @@ -256,7 +256,7 @@ class jitter(object): return ExceptionHandle.memoryBreakpoint() self.add_exception_handler(EXCEPT_CODE_AUTOMOD, exception_automod) - self.add_exception_handler(EXCEPT_BREAKPOINT_INTERN, + self.add_exception_handler(EXCEPT_BREAKPOINT_MEMORY, exception_memory_breakpoint) def add_breakpoint(self, addr, callback): diff --git a/miasm2/jitter/vm_mngr.c b/miasm2/jitter/vm_mngr.c index 3c324a08..8e50a6dd 100644 --- a/miasm2/jitter/vm_mngr.c +++ b/miasm2/jitter/vm_mngr.c @@ -220,7 +220,7 @@ static uint64_t memory_page_read(vm_mngr_t* vm_mngr, unsigned int my_size, uint6 if ((b->access & BREAKPOINT_READ) == 0) continue; if ((b->ad <= ad) && (ad < b->ad + b->size)) - vm_mngr->exception_flags |= EXCEPT_BREAKPOINT_INTERN; + vm_mngr->exception_flags |= EXCEPT_BREAKPOINT_MEMORY; } @@ -306,7 +306,7 @@ static void memory_page_write(vm_mngr_t* vm_mngr, unsigned int my_size, if ((b->access & BREAKPOINT_WRITE) == 0) continue; if ((b->ad <= ad) && (ad < b->ad + b->size)) - vm_mngr->exception_flags |= EXCEPT_BREAKPOINT_INTERN; + vm_mngr->exception_flags |= EXCEPT_BREAKPOINT_MEMORY; } addr = &((unsigned char*)mpn->ad_hp)[ad - mpn->ad]; @@ -495,13 +495,13 @@ void check_memory_breakpoint(vm_mngr_t* vm_mngr) /* Check memory breakpoints */ LIST_FOREACH(memory_bp, &vm_mngr->memory_breakpoint_pool, next) { - if (vm_mngr->exception_flags & EXCEPT_BREAKPOINT_INTERN) + if (vm_mngr->exception_flags & EXCEPT_BREAKPOINT_MEMORY) break; if (memory_bp->access & BREAKPOINT_READ) { for (i=0;i<vm_mngr->memory_r.num; i++) { if ((memory_bp->ad < vm_mngr->memory_r.array[i].stop) && (vm_mngr->memory_r.array[i].start < memory_bp->ad + memory_bp->size)) { - vm_mngr->exception_flags |= EXCEPT_BREAKPOINT_INTERN; + vm_mngr->exception_flags |= EXCEPT_BREAKPOINT_MEMORY; break; } } @@ -510,7 +510,7 @@ void check_memory_breakpoint(vm_mngr_t* vm_mngr) for (i=0;i<vm_mngr->memory_w.num; i++) { if ((memory_bp->ad < vm_mngr->memory_w.array[i].stop) && (vm_mngr->memory_w.array[i].start < memory_bp->ad + memory_bp->size)) { - vm_mngr->exception_flags |= EXCEPT_BREAKPOINT_INTERN; + vm_mngr->exception_flags |= EXCEPT_BREAKPOINT_MEMORY; break; } } diff --git a/miasm2/jitter/vm_mngr.h b/miasm2/jitter/vm_mngr.h index d114d8f0..8528eb3f 100644 --- a/miasm2/jitter/vm_mngr.h +++ b/miasm2/jitter/vm_mngr.h @@ -147,7 +147,9 @@ struct memory_breakpoint_info { #define EXCEPT_SOFT_BP (1<<1) #define EXCEPT_INT_XX (1<<2) -#define EXCEPT_BREAKPOINT_INTERN (1<<10) +#define EXCEPT_BREAKPOINT_MEMORY (1<<10) +// Deprecated +#define EXCEPT_BREAKPOINT_INTERN (EXCEPT_BREAKPOINT_MEMORY) #define EXCEPT_NUM_UPDT_EIP (1<<11) // interrupt with eip at instr diff --git a/miasm2/jitter/vm_mngr_py.c b/miasm2/jitter/vm_mngr_py.c index fa69fab5..24f9dd9a 100644 --- a/miasm2/jitter/vm_mngr_py.c +++ b/miasm2/jitter/vm_mngr_py.c @@ -679,7 +679,7 @@ static PyMethodDef VmMngr_methods[] = { {"check_invalid_code_blocs",(PyCFunction)vm_check_invalid_code_blocs, METH_VARARGS, "check_invalid_code_blocs() -> Set the AUTOMOD flag in exception in case of automodified code"}, {"check_memory_breakpoint",(PyCFunction)vm_check_memory_breakpoint, METH_VARARGS, - "check_memory_breakpoint() -> Set the BREAKPOINT_INTERN flag in exception in case of memory breakpoint occurred"}, + "check_memory_breakpoint() -> Set the BREAKPOINT_MEMORY flag in exception in case of memory breakpoint occurred"}, {NULL} /* Sentinel */ }; diff --git a/test/jitter/test_post_instr.py b/test/jitter/test_post_instr.py index 8dc27dc2..3e68d58e 100644 --- a/test/jitter/test_post_instr.py +++ b/test/jitter/test_post_instr.py @@ -1,5 +1,5 @@ from miasm2.analysis.machine import Machine -from miasm2.jitter.csts import PAGE_READ, PAGE_WRITE, EXCEPT_BREAKPOINT_INTERN, EXCEPT_ACCESS_VIOL +from miasm2.jitter.csts import PAGE_READ, PAGE_WRITE, EXCEPT_BREAKPOINT_MEMORY, EXCEPT_ACCESS_VIOL import sys machine = Machine("x86_32") @@ -29,8 +29,8 @@ jitter.jit.log_regs = True def do_not_raise_me(jitter): raise ValueError("Should not be here") -jitter.exceptions_handler.callbacks[EXCEPT_BREAKPOINT_INTERN] = [] -jitter.add_exception_handler(EXCEPT_BREAKPOINT_INTERN, +jitter.exceptions_handler.callbacks[EXCEPT_BREAKPOINT_MEMORY] = [] +jitter.add_exception_handler(EXCEPT_BREAKPOINT_MEMORY, do_not_raise_me) jitter.vm.add_memory_breakpoint(0x11000-4, 4, PAGE_READ | PAGE_WRITE) |