Beispiel #1
0
PyObject* vm_set_mem_access(VmMngr* self, PyObject* args)
{
	PyObject *addr;
	PyObject *access;
	uint64_t page_addr;
	uint64_t page_access;
	struct memory_page_node * mpn;

	if (!PyArg_ParseTuple(args, "OO", &addr, &access))
		RAISE(PyExc_TypeError,"Cannot parse arguments");

	PyGetInt_uint64_t(addr, page_addr);
	PyGetInt_uint64_t(access, page_access);

	mpn = get_memory_page_from_address(&self->vm_mngr, page_addr, 1);
	if (!mpn){
		PyErr_SetString(PyExc_RuntimeError, "cannot find address");
		return 0;
	}

	mpn->access = page_access;

	Py_INCREF(Py_None);
	return Py_None;
}
Beispiel #2
0
PyObject* vm_set_mem_access(VmMngr* self, PyObject* args)
{
	PyObject *addr;
	PyObject *access;

	uint64_t ret = 0x1337beef;
	uint64_t page_addr;
	uint64_t page_access;
	struct memory_page_node * mpn;

	if (!PyArg_ParseTuple(args, "OO", &addr, &access))
		return NULL;

	PyGetInt(addr, page_addr);
	PyGetInt(access, page_access);

	mpn = get_memory_page_from_address(&self->vm_mngr, page_addr);
	if (!mpn){
		PyErr_SetString(PyExc_RuntimeError, "cannot find address");
		return 0;
	}

	mpn->access = page_access;
	return PyLong_FromUnsignedLongLong((uint64_t)ret);
}
Beispiel #3
0
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))
		RAISE(PyExc_TypeError,"Cannot parse arguments");

	PyGetInt_uint64_t(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);
}