diff options
| author | Pierre Graux <pierre.graux@ensimag.grenoble-inp.fr> | 2016-08-31 14:09:40 +0200 |
|---|---|---|
| committer | Pierre Graux <pierre.graux@ensimag.grenoble-inp.fr> | 2016-09-01 12:28:35 +0200 |
| commit | 4c019ff2a7d53e3b8b1d74f6bdae6a7523d7871b (patch) | |
| tree | cedcef86bdc3c18b100923aa6a82201e2f9f8219 /miasm2/jitter/vm_mngr_py.c | |
| parent | 6d518de0330d3ffecffb138fd1d94b258052e0d0 (diff) | |
| download | miasm-4c019ff2a7d53e3b8b1d74f6bdae6a7523d7871b.tar.gz miasm-4c019ff2a7d53e3b8b1d74f6bdae6a7523d7871b.zip | |
Add a way to retrieve memory access right
Diffstat (limited to 'miasm2/jitter/vm_mngr_py.c')
| -rw-r--r-- | miasm2/jitter/vm_mngr_py.c | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/miasm2/jitter/vm_mngr_py.c b/miasm2/jitter/vm_mngr_py.c index 5aece270..891d4459 100644 --- a/miasm2/jitter/vm_mngr_py.c +++ b/miasm2/jitter/vm_mngr_py.c @@ -195,6 +195,25 @@ PyObject* vm_set_mem(VmMngr* self, PyObject* args) +PyObject* vm_get_mem_access(VmMngr* self, PyObject* args) +{ + PyObject *py_addr; + uint64_t page_addr; + struct memory_page_node * mpn; + + if (!PyArg_ParseTuple(args, "O", &py_addr)) + return NULL; + + PyGetInt(py_addr, page_addr); + + mpn = get_memory_page_from_address(&self->vm_mngr, page_addr, 1); + if (!mpn){ + PyErr_SetString(PyExc_RuntimeError, "cannot find address"); + return 0; + } + + return PyLong_FromUnsignedLongLong((uint64_t)mpn->access); +} PyObject* vm_get_mem(VmMngr* self, PyObject* args) { @@ -606,6 +625,8 @@ static PyMethodDef VmMngr_methods[] = { "X"}, {"add_code_bloc",(PyCFunction)vm_add_code_bloc, METH_VARARGS, "X"}, + {"get_mem_access", (PyCFunction)vm_get_mem_access, METH_VARARGS, + "X"}, {"get_mem", (PyCFunction)vm_get_mem, METH_VARARGS, "X"}, {"add_memory_page",(PyCFunction)vm_add_memory_page, METH_VARARGS, |