def _stopTrace(self): self.startTraceAct.setEnabled(True) self.stopTraceAct.setEnabled(False) p = ecmd.EcmdPacket(XMONO_ID_FUNC_TRACE_STOP, "") self._ecmd.sendPacket(p) self.log.d(u"send packet id = {0}".format(p.id)); self.ui.funcGroupBox.setTitle (u"暂无跟踪结果...")
def _startTrace(self): self._traceFuncCntDict.clear() self._clearFuncCntTableWidget() self.ui.funcGroupBox.setTitle (u"正在跟踪...") self.startTraceAct.setEnabled(False) self.stopTraceAct.setEnabled(True) p = ecmd.EcmdPacket(XMONO_ID_FUNC_TRACE_START, "") self._ecmd.sendPacket(p) self.log.d(u"send packet id = {0}".format(p.id));
def _disasmMethod(self, s): s = str(s) p = "\[(.*)\].*\[(.*)\]" r = re.search(p, s) if r == None: self.log.e(u"无法从{0}中提取需要的信息".format(s)) return g = r.groups() req = xmono_pb2.DisasmMethodReq() req.method_token = int(g[1], 16) req.image_name = g[0] pkg = ecmd.EcmdPacket(XMONO_ID_DISASM_METHOD_REP, req.SerializeToString()) self._ecmd.sendPacket(pkg)
def _traceMethod(self, s, sw): s = str(s) p = "\[(.*)\].*\[(.*)\]" r = re.search(p, s) if r == None: self.log.e(u"无法从{0}中提取需要的信息".format(s)) return g = r.groups() req = xmono_pb2.StackTraceReq() req.image_name = g[0] req.method_token = int(g[1], 16) if sw: pck_id = XMONO_ID_STACK_TRACE_REP else: pck_id = XMONO_ID_UNSTACK_TRACE_REP pkg = ecmd.EcmdPacket(pck_id, req.SerializeToString()) self._ecmd.sendPacket(pkg)
def _replaceMethod(self, iname, token, t): code = t[0] ex = t[1] req = xmono_pb2.ReplaceMethodReq() req.domain_id = 0 req.image_name = str(iname) req.method_token = token req.new_code = code if (len(ex.keys()) > 0): keys = ex.keys() keys.sort() for k in keys: e = req.ex.add() e.index = k e.try_offset = ex[k].try_offset e.try_len = ex[k].try_len e.handler_offset = ex[k].handler_offset e.handler_len = ex[k].handler_len pkg = ecmd.EcmdPacket(XMONO_ID_REPLACE_METHOD_REP, req.SerializeToString()) self._ecmd.sendPacket(pkg) self.log.d(u"_replaceMethod over")
def _execLuaCode(self, code): req = xmono_pb2.LuaExecReq() req.lua_code = code pkg = ecmd.EcmdPacket(XMONO_ID_LUA_EXEC_REP, req.SerializeToString()) self._ecmd.sendPacket(pkg)
def _listDomain(self): pkg = ecmd.EcmdPacket(XMONO_ID_LIST_DOMAIN_REP, "") self._ecmd.sendPacket(pkg)