PyObject* Python_RTN_Sym(PyObject* self, PyObject* args) { PyObject* x; PyArg_ParseTuple(args, "L", &x); RTN x_object = *(RTN*) x; SYM* sym_return = (SYM*) malloc(sizeof(SYM)); *sym_return = RTN_Sym(x_object); return Py_BuildValue("L", sym_return); }
VOID Routine(RTN rtn, void * v) { RTN_Open(rtn); if(strcmp(RTN_Name(rtn).c_str(),"memcpy")==0) { if(SYM_IFunc(RTN_Sym(rtn))) { cout << "Found IFUNC memcpy"<< endl; RTN_InsertCall(rtn, IPOINT_BEFORE, AFUNPTR(IfuncMemcpy), IARG_END); } else { cout << "Found non IFUNC memcpy"<< endl; RTN_InsertCall(rtn, IPOINT_BEFORE, AFUNPTR(Memcpy), IARG_FUNCARG_ENTRYPOINT_VALUE, 0, IARG_FUNCARG_ENTRYPOINT_VALUE, 1, IARG_FUNCARG_ENTRYPOINT_VALUE, 2 , IARG_END); } } RTN_Close(rtn); }
int rtn_sym (lua_State *L) { RTN* v1 = check_rtn(L,1); SYM_to_lua(L, RTN_Sym(*v1)); return 1; }