about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorWilliam Bruneau <william.bruneau@epfedu.fr>2019-05-17 14:50:38 +0200
committerWilliam Bruneau <william.bruneau@epfedu.fr>2019-05-17 14:50:38 +0200
commita15b03b615f9690e852fd8e58c198f50aabf3c63 (patch)
tree4bf965137b1908a2ff67f62451078149166dcec9
parent5defcd6e88047300627055e59478c5e8a767c8e8 (diff)
downloadmiasm-a15b03b615f9690e852fd8e58c198f50aabf3c63.tar.gz
miasm-a15b03b615f9690e852fd8e58c198f50aabf3c63.zip
Remove get_mem and set_mem from JitCpu
-rw-r--r--miasm/jitter/JitCore.c38
-rw-r--r--miasm/jitter/JitCore.h2
-rw-r--r--miasm/jitter/arch/JitCore_aarch64.c37
-rw-r--r--miasm/jitter/arch/JitCore_arm.c37
-rw-r--r--miasm/jitter/arch/JitCore_mep.c35
-rw-r--r--miasm/jitter/arch/JitCore_mips32.c37
-rw-r--r--miasm/jitter/arch/JitCore_msp430.c38
-rw-r--r--miasm/jitter/arch/JitCore_ppc32.c35
-rw-r--r--miasm/jitter/arch/JitCore_x86.c37
-rw-r--r--miasm/jitter/emulatedsymbexec.py5
-rw-r--r--miasm/jitter/vm_mngr_py.c8
11 files changed, 6 insertions, 303 deletions
diff --git a/miasm/jitter/JitCore.c b/miasm/jitter/JitCore.c
index 91a1dd29..1ba082c5 100644
--- a/miasm/jitter/JitCore.c
+++ b/miasm/jitter/JitCore.c
@@ -226,41 +226,3 @@ void MEM_WRITE_INT_BN_FROM_PTR(JitCpu* jitcpu, int size, uint64_t addr, char* pt
 	memcpy(&val, ptr, size / 8);
 	MEM_WRITE_INT_BN(jitcpu, size, addr, val);
 }
-
-
-
-PyObject* vm_get_mem(JitCpu *self, PyObject* args)
-{
-       PyObject *py_addr;
-       PyObject *py_len;
-
-       uint64_t addr;
-       uint64_t size;
-       size_t size_st;
-       PyObject *obj_out;
-       char * buf_out;
-       int ret;
-
-       if (!PyArg_ParseTuple(args, "OO", &py_addr, &py_len))
-	       return NULL;
-
-       PyGetInt_uint64_t(py_addr, addr);
-       PyGetInt_uint64_t(py_len, size);
-
-
-       if (size > SSIZE_MAX) {
-	       fprintf(stderr, "Read size wider than supported system\n");
-	       exit(EXIT_FAILURE);
-       }
-       size_st = (size_t)size;
-
-       ret = vm_read_mem(&(((VmMngr*)self->pyvm)->vm_mngr), addr, &buf_out, size_st);
-       if (ret < 0) {
-	       PyErr_SetString(PyExc_RuntimeError, "cannot find address");
-	       return NULL;
-       }
-
-       obj_out = PyBytes_FromStringAndSize(buf_out, (Py_ssize_t)size_st);
-       free(buf_out);
-       return obj_out;
-}
diff --git a/miasm/jitter/JitCore.h b/miasm/jitter/JitCore.h
index 798b360e..7b7f6c13 100644
--- a/miasm/jitter/JitCore.h
+++ b/miasm/jitter/JitCore.h
@@ -226,8 +226,6 @@ _MIASM_EXPORT void MEM_WRITE_BN_INT(JitCpu* jitcpu, int size, bn_t addr, uint64_
 _MIASM_EXPORT void MEM_WRITE_INT_BN(JitCpu* jitcpu, int size, uint64_t addr, bn_t src);
 
 
-PyObject* vm_get_mem(JitCpu *self, PyObject* args);
-
 _MIASM_EXPORT void MEM_LOOKUP_INT_BN_TO_PTR(JitCpu* jitcpu, int size, uint64_t addr, char* ptr);
 _MIASM_EXPORT void MEM_WRITE_INT_BN_FROM_PTR(JitCpu* jitcpu, int size, uint64_t addr, char* ptr);
 
diff --git a/miasm/jitter/arch/JitCore_aarch64.c b/miasm/jitter/arch/JitCore_aarch64.c
index f83f8792..7961f3cc 100644
--- a/miasm/jitter/arch/JitCore_aarch64.c
+++ b/miasm/jitter/arch/JitCore_aarch64.c
@@ -252,39 +252,6 @@ void MEM_WRITE_64(JitCpu* jitcpu, uint64_t addr, uint64_t src)
 }
 
 
-PyObject* vm_set_mem(JitCpu *self, PyObject* args)
-{
-       PyObject *py_addr;
-       PyObject *py_buffer;
-       Py_ssize_t py_length;
-
-       char * buffer;
-       Py_ssize_t pysize;
-       uint64_t addr;
-       int ret;
-
-       if (!PyArg_ParseTuple(args, "OO", &py_addr, &py_buffer))
-	       RAISE(PyExc_TypeError,"Cannot parse arguments");
-
-       PyGetInt_uint64_t(py_addr, addr);
-
-       if(!PyBytes_Check(py_buffer))
-	       RAISE(PyExc_TypeError,"arg must be bytes");
-
-       pysize = PyBytes_Size(py_buffer);
-       if (pysize < 0) {
-	       RAISE(PyExc_TypeError,"Python error");
-       }
-       PyBytes_AsStringAndSize(py_buffer, &buffer, &py_length);
-
-       ret = vm_write_mem(&(((VmMngr*)self->pyvm)->vm_mngr), addr, buffer, pysize);
-       if (ret < 0)
-	       RAISE(PyExc_TypeError,"arg must be str");
-
-       Py_INCREF(Py_None);
-       return Py_None;
-}
-
 static PyMemberDef JitCpu_members[] = {
     {NULL}  /* Sentinel */
 };
@@ -304,10 +271,6 @@ static PyMethodDef JitCpu_methods[] = {
 	 "X"},
 	{"set_exception", (PyCFunction)cpu_set_exception, METH_VARARGS,
 	 "X"},
-	{"set_mem", (PyCFunction)vm_set_mem, METH_VARARGS,
-	 "X"},
-	{"get_mem", (PyCFunction)vm_get_mem, METH_VARARGS,
-	 "X"},
 	{NULL}  /* Sentinel */
 };
 
diff --git a/miasm/jitter/arch/JitCore_arm.c b/miasm/jitter/arch/JitCore_arm.c
index 946ac0b9..b39ae4d2 100644
--- a/miasm/jitter/arch/JitCore_arm.c
+++ b/miasm/jitter/arch/JitCore_arm.c
@@ -204,39 +204,6 @@ void MEM_WRITE_64(JitCpu* jitcpu, uint64_t addr, uint64_t src)
 	vm_MEM_WRITE_64(&((VmMngr*)jitcpu->pyvm)->vm_mngr, addr, src);
 }
 
-PyObject* vm_set_mem(JitCpu *self, PyObject* args)
-{
-       PyObject *py_addr;
-       PyObject *py_buffer;
-       Py_ssize_t py_length;
-
-       char * buffer;
-       Py_ssize_t pysize;
-       uint64_t addr;
-       int ret;
-
-       if (!PyArg_ParseTuple(args, "OO", &py_addr, &py_buffer))
-	       RAISE(PyExc_TypeError,"Cannot parse arguments");
-
-       PyGetInt_uint64_t(py_addr, addr);
-
-       if(!PyBytes_Check(py_buffer))
-	       RAISE(PyExc_TypeError,"arg must be bytes");
-
-       pysize = PyBytes_Size(py_buffer);
-       if (pysize < 0) {
-	       RAISE(PyExc_TypeError,"Python error");
-       }
-       PyBytes_AsStringAndSize(py_buffer, &buffer, &py_length);
-
-       ret = vm_write_mem(&(((VmMngr*)self->pyvm)->vm_mngr), addr, buffer, pysize);
-       if (ret < 0)
-	       RAISE(PyExc_TypeError,"arg must be str");
-
-       Py_INCREF(Py_None);
-       return Py_None;
-}
-
 PyObject* cpu_set_interrupt_num(JitCpu* self, PyObject* args)
 {
 	PyObject *item1;
@@ -280,10 +247,6 @@ static PyMethodDef JitCpu_methods[] = {
 	 "X"},
 	{"set_interrupt_num", (PyCFunction)cpu_set_interrupt_num, METH_VARARGS,
 	 "X"},
-	{"set_mem", (PyCFunction)vm_set_mem, METH_VARARGS,
-	 "X"},
-	{"get_mem", (PyCFunction)vm_get_mem, METH_VARARGS,
-	 "X"},
 	{NULL}  /* Sentinel */
 };
 
diff --git a/miasm/jitter/arch/JitCore_mep.c b/miasm/jitter/arch/JitCore_mep.c
index 70d1d22c..286a12ac 100644
--- a/miasm/jitter/arch/JitCore_mep.c
+++ b/miasm/jitter/arch/JitCore_mep.c
@@ -269,39 +269,6 @@ void MEM_WRITE_64(JitCpu* jitcpu, uint64_t addr, uint64_t src)
 }
 
 
-PyObject* vm_set_mem(JitCpu *self, PyObject* args)
-{
-       PyObject *py_addr;
-       PyObject *py_buffer;
-       Py_ssize_t py_length;
-
-       char * buffer;
-       Py_ssize_t pysize;
-       uint64_t addr;
-       int ret = 0x1337;
-
-       if (!PyArg_ParseTuple(args, "OO", &py_addr, &py_buffer))
-	   return NULL;
-
-       PyGetInt_uint64_t(py_addr, addr);
-
-       if(!PyBytes_Check(py_buffer))
-	   RAISE(PyExc_TypeError,"arg must be bytes");
-
-       pysize = PyBytes_Size(py_buffer);
-       if (pysize < 0) {
-	       RAISE(PyExc_TypeError,"Python error");
-       }
-       PyBytes_AsStringAndSize(py_buffer, &buffer, &py_length);
-
-       ret = vm_write_mem(&(((VmMngr*)self->pyvm)->vm_mngr), addr, buffer, pysize);
-       if (ret < 0)
-	   RAISE(PyExc_TypeError,"arg must be str");
-
-       Py_INCREF(Py_None);
-       return Py_None;
-}
-
 static PyMemberDef JitCpu_members[] = {
     {NULL}  /* Sentinel */
 };
@@ -314,8 +281,6 @@ static PyMethodDef JitCpu_methods[] = {
     {"set_gpreg", (PyCFunction)cpu_set_gpreg, METH_VARARGS, "X"},
     {"get_exception", (PyCFunction)cpu_get_exception, METH_VARARGS, "X"},
     {"set_exception", (PyCFunction)cpu_set_exception, METH_VARARGS, "X"},
-    {"set_mem", (PyCFunction)vm_set_mem, METH_VARARGS, "X"},
-    {"get_mem", (PyCFunction)vm_get_mem, METH_VARARGS, "X"},
     {NULL}  /* Sentinel */
 };
 
diff --git a/miasm/jitter/arch/JitCore_mips32.c b/miasm/jitter/arch/JitCore_mips32.c
index 82193e03..dc576dfb 100644
--- a/miasm/jitter/arch/JitCore_mips32.c
+++ b/miasm/jitter/arch/JitCore_mips32.c
@@ -228,39 +228,6 @@ void MEM_WRITE_64(JitCpu* jitcpu, uint64_t addr, uint64_t src)
 }
 
 
-PyObject* vm_set_mem(JitCpu *self, PyObject* args)
-{
-       PyObject *py_addr;
-       PyObject *py_buffer;
-       Py_ssize_t py_length;
-
-       char * buffer;
-       Py_ssize_t pysize;
-       uint64_t addr;
-       int ret;
-
-       if (!PyArg_ParseTuple(args, "OO", &py_addr, &py_buffer))
-	       RAISE(PyExc_TypeError,"Cannot parse arguments");
-
-       PyGetInt_uint64_t(py_addr, addr);
-
-       if (!PyBytes_Check(py_buffer))
-	       RAISE(PyExc_TypeError,"arg must be bytes");
-
-       pysize = PyBytes_Size(py_buffer);
-       if (pysize < 0) {
-	       RAISE(PyExc_TypeError,"Python error");
-       }
-
-       PyBytes_AsStringAndSize(py_buffer, &buffer, &py_length);
-
-       ret = vm_write_mem(&(((VmMngr*)self->pyvm)->vm_mngr), addr, buffer, pysize);
-       if (ret < 0)
-	       RAISE(PyExc_TypeError,"arg must be str");
-
-       Py_INCREF(Py_None);
-       return Py_None;
-}
 
 static PyMemberDef JitCpu_members[] = {
     {NULL}  /* Sentinel */
@@ -279,10 +246,6 @@ static PyMethodDef JitCpu_methods[] = {
 	 "X"},
 	{"set_exception", (PyCFunction)cpu_set_exception, METH_VARARGS,
 	 "X"},
-	{"set_mem", (PyCFunction)vm_set_mem, METH_VARARGS,
-	 "X"},
-	{"get_mem", (PyCFunction)vm_get_mem, METH_VARARGS,
-	 "X"},
 	{NULL}  /* Sentinel */
 };
 
diff --git a/miasm/jitter/arch/JitCore_msp430.c b/miasm/jitter/arch/JitCore_msp430.c
index b43974b7..2bb51c68 100644
--- a/miasm/jitter/arch/JitCore_msp430.c
+++ b/miasm/jitter/arch/JitCore_msp430.c
@@ -204,40 +204,6 @@ void MEM_WRITE_64(JitCpu* jitcpu, uint64_t addr, uint64_t src)
 }
 
 
-PyObject* vm_set_mem(JitCpu *self, PyObject* args)
-{
-       PyObject *py_addr;
-       PyObject *py_buffer;
-       Py_ssize_t py_length;
-
-       char * buffer;
-       Py_ssize_t pysize;
-       uint64_t addr;
-       int ret;
-
-       if (!PyArg_ParseTuple(args, "OO", &py_addr, &py_buffer))
-	       RAISE(PyExc_TypeError,"Cannot parse arguments");
-
-       PyGetInt_uint64_t(py_addr, addr);
-
-       if(!PyBytes_Check(py_buffer))
-	       RAISE(PyExc_TypeError,"arg must be bytes");
-
-       pysize = PyBytes_Size(py_buffer);
-       if (pysize < 0) {
-	       RAISE(PyExc_TypeError,"Python error");
-       }
-
-       PyBytes_AsStringAndSize(py_buffer, &buffer, &py_length);
-
-       ret = vm_write_mem(&(((VmMngr*)self->pyvm)->vm_mngr), addr, buffer, pysize);
-       if (ret < 0)
-	       RAISE(PyExc_TypeError,"arg must be str");
-
-       Py_INCREF(Py_None);
-       return Py_None;
-}
-
 static PyMemberDef JitCpu_members[] = {
     {NULL}  /* Sentinel */
 };
@@ -257,10 +223,6 @@ static PyMethodDef JitCpu_methods[] = {
 	 "X"},
 	{"set_exception", (PyCFunction)cpu_set_exception, METH_VARARGS,
 	 "X"},
-	{"set_mem", (PyCFunction)vm_set_mem, METH_VARARGS,
-	 "X"},
-	{"get_mem", (PyCFunction)vm_get_mem, METH_VARARGS,
-	 "X"},
 	{NULL}  /* Sentinel */
 };
 
diff --git a/miasm/jitter/arch/JitCore_ppc32.c b/miasm/jitter/arch/JitCore_ppc32.c
index a071c53c..086b140f 100644
--- a/miasm/jitter/arch/JitCore_ppc32.c
+++ b/miasm/jitter/arch/JitCore_ppc32.c
@@ -161,39 +161,6 @@ void MEM_WRITE_64(JitCpu* jitcpu, uint64_t addr, uint64_t src)
 
 
 
-PyObject *
-vm_set_mem(JitCpu *self, PyObject *args) {
-   PyObject *py_addr;
-   PyObject *py_buffer;
-   Py_ssize_t py_length;
-
-   char *buffer;
-   Py_ssize_t pysize;
-   uint64_t addr;
-   int ret = 0x1337;
-
-   if (!PyArg_ParseTuple(args, "OO", &py_addr, &py_buffer))
-       return NULL;
-
-   PyGetInt_uint64_t(py_addr, addr);
-
-   if(!PyBytes_Check(py_buffer))
-       RAISE(PyExc_TypeError,"arg must be bytes");
-
-   pysize = PyBytes_Size(py_buffer);
-   if (pysize < 0) {
-	   RAISE(PyExc_TypeError,"Python error");
-   }
-   PyBytes_AsStringAndSize(py_buffer, &buffer, &py_length);
-
-   ret = vm_write_mem(&(((VmMngr*)self->pyvm)->vm_mngr), addr, buffer, pysize);
-   if (ret < 0)
-       RAISE(PyExc_TypeError,"arg must be str");
-
-   Py_INCREF(Py_None);
-   return Py_None;
-}
-
 static PyMemberDef JitCpu_members[] = {
     {NULL}  /* Sentinel */
 };
@@ -207,8 +174,6 @@ static PyMethodDef JitCpu_methods[] = {
     {"get_exception", (PyCFunction)cpu_get_exception, METH_VARARGS, "X"},
     {"set_exception", (PyCFunction)cpu_set_exception, METH_VARARGS, "X"},
     {"get_spr_access", (PyCFunction)cpu_get_spr_access, METH_VARARGS, "X"},
-    {"set_mem", (PyCFunction)vm_set_mem, METH_VARARGS, "X"},
-    {"get_mem", (PyCFunction)vm_get_mem, METH_VARARGS, "X"},
     {NULL}  /* Sentinel */
 };
 
diff --git a/miasm/jitter/arch/JitCore_x86.c b/miasm/jitter/arch/JitCore_x86.c
index 068417a6..361b18b4 100644
--- a/miasm/jitter/arch/JitCore_x86.c
+++ b/miasm/jitter/arch/JitCore_x86.c
@@ -460,39 +460,6 @@ void MEM_WRITE_64(JitCpu* jitcpu, uint64_t addr, uint64_t src)
 
 
 
-PyObject* vm_set_mem(JitCpu *self, PyObject* args)
-{
-       PyObject *py_addr;
-       PyObject *py_buffer;
-       Py_ssize_t py_length;
-
-       char * buffer;
-       Py_ssize_t pysize;
-       uint64_t addr;
-       int ret;
-
-       if (!PyArg_ParseTuple(args, "OO", &py_addr, &py_buffer))
-	       RAISE(PyExc_TypeError,"Cannot parse arguments");
-
-       PyGetInt_uint64_t(py_addr, addr);
-
-       if(!PyBytes_Check(py_buffer))
-	       RAISE(PyExc_TypeError,"arg must be bytes");
-
-       pysize = PyBytes_Size(py_buffer);
-       if (pysize < 0) {
-	       RAISE(PyExc_TypeError,"Python error");
-       }
-       PyBytes_AsStringAndSize(py_buffer, &buffer, &py_length);
-
-       ret = vm_write_mem(&(((VmMngr*)self->pyvm)->vm_mngr), addr, buffer, pysize);
-       if (ret < 0)
-	       RAISE(PyExc_TypeError,"arg must be str");
-
-       Py_INCREF(Py_None);
-       return Py_None;
-}
-
 static PyMemberDef JitCpu_members[] = {
     {NULL}  /* Sentinel */
 };
@@ -516,10 +483,6 @@ static PyMethodDef JitCpu_methods[] = {
 	 "X"},
 	{"set_exception", (PyCFunction)cpu_set_exception, METH_VARARGS,
 	 "X"},
-	{"set_mem", (PyCFunction)vm_set_mem, METH_VARARGS,
-	 "X"},
-	{"get_mem", (PyCFunction)vm_get_mem, METH_VARARGS,
-	 "X"},
 	{"get_interrupt_num", (PyCFunction)cpu_get_interrupt_num, METH_VARARGS,
 	 "X"},
 	{"set_interrupt_num", (PyCFunction)cpu_set_interrupt_num, METH_VARARGS,
diff --git a/miasm/jitter/emulatedsymbexec.py b/miasm/jitter/emulatedsymbexec.py
index 4355c0b9..cf5e3036 100644
--- a/miasm/jitter/emulatedsymbexec.py
+++ b/miasm/jitter/emulatedsymbexec.py
@@ -45,7 +45,7 @@ class EmulatedSymbExec(SymbolicExecutionEngine):
             return super(EmulatedSymbExec, self).mem_read(expr_mem)
         addr = int(addr)
         size = expr_mem.size // 8
-        value = self.cpu.get_mem(addr, size)
+        value = self.vm.get_mem(addr, size)
         if self.vm.is_little_endian():
             value = value[::-1]
         self.vm.add_mem_read(addr, size)
@@ -77,8 +77,7 @@ class EmulatedSymbExec(SymbolicExecutionEngine):
             content = content[::-1]
 
         # Write in VmMngr context
-        self.cpu.set_mem(addr, content)
-        self.vm.add_mem_write(addr, len(content))
+        self.vm.set_mem(addr, content)
 
     # Interaction symbexec <-> jitter
     def update_cpu_from_engine(self):
diff --git a/miasm/jitter/vm_mngr_py.c b/miasm/jitter/vm_mngr_py.c
index 38e2171e..69e62fef 100644
--- a/miasm/jitter/vm_mngr_py.c
+++ b/miasm/jitter/vm_mngr_py.c
@@ -156,7 +156,7 @@ PyObject* vm_set_mem_access(VmMngr* self, PyObject* args)
 	return Py_None;
 }
 
-PyObject* vm_set_mem_vmmngr(VmMngr* self, PyObject* args)
+PyObject* vm_set_mem(VmMngr* self, PyObject* args)
 {
        PyObject *py_addr;
        PyObject *py_buffer;
@@ -214,7 +214,7 @@ PyObject* vm_get_mem_access(VmMngr* self, PyObject* args)
 	return PyLong_FromUnsignedLongLong((uint64_t)mpn->access);
 }
 
-PyObject* vm_get_mem_vmmngr(VmMngr* self, PyObject* args)
+PyObject* vm_get_mem(VmMngr* self, PyObject* args)
 {
        PyObject *py_addr;
        PyObject *py_len;
@@ -844,7 +844,7 @@ static PyMethodDef VmMngr_methods[] = {
 	 "init_code_bloc_pool() -> Initialize the VmMngr jitted code blocks"},
 	{"set_mem_access", (PyCFunction)vm_set_mem_access, METH_VARARGS,
 	 "set_mem_access(address, access) -> Change the protection of the page at @address with @access"},
-	{"set_mem", (PyCFunction)vm_set_mem_vmmngr, METH_VARARGS,
+	{"set_mem", (PyCFunction)vm_set_mem, METH_VARARGS,
 	 "set_mem(address, data) -> Set a @data in memory at @address"},
 	{"is_mapped", (PyCFunction)vm_is_mapped, METH_VARARGS,
 	 "is_mapped(address, size) -> Check if the memory region at @address of @size bytes is fully mapped"},
@@ -852,7 +852,7 @@ static PyMethodDef VmMngr_methods[] = {
 	 "add_code_bloc(address_start, address_stop) -> Add a jitted code block between [@address_start, @address_stop["},
 	{"get_mem_access", (PyCFunction)vm_get_mem_access, METH_VARARGS,
 	 "get_mem_access(address) -> Retrieve the memory protection of the page at @address"},
-	{"get_mem", (PyCFunction)vm_get_mem_vmmngr, METH_VARARGS,
+	{"get_mem", (PyCFunction)vm_get_mem, METH_VARARGS,
 	 "get_mem(addr, size) -> Get the memory content at @address of @size bytes"},
 
 	{"get_u8", (PyCFunction)vm_get_u8, METH_VARARGS,