public override Task <ReadInstructionInfosResponse> ReadInstructionInfos( ReadInstructionInfosRequest request, ServerCallContext context) { RemoteTarget target = GrpcLookupUtils.GetTarget(request.Target, _targetStore); SbAddress address = _addressStore.GetObject(request.Address.Id); var response = new ReadInstructionInfosResponse(); List <InstructionInfo> instructions = target.ReadInstructionInfos(address, request.Count, request.Flavor); if (instructions != null) { foreach (InstructionInfo instruction in instructions) { var instructionInfo = new GrpcInstructionInfo { Address = instruction.Address, Operands = instruction.Operands ?? "", Comment = instruction.Comment ?? "", Mnemonic = instruction.Mnemonic ?? "", SymbolName = instruction.SymbolName ?? "" }; if (instruction.LineEntry != null) { instructionInfo.LineEntry = new GrpcLineEntryInfo { FileName = instruction.LineEntry.FileName ?? "", Directory = instruction.LineEntry.Directory ?? "", Line = instruction.LineEntry.Line, Column = instruction.LineEntry.Column }; } response.Instructions.Add(instructionInfo); } } return(Task.FromResult(response)); }
// Kills the process. // Returns true if successful, false otherwise. public override Task <KillResponse> Kill(KillRequest request, ServerCallContext context) { var sbProcess = GrpcLookupUtils.GetProcess(request.Process, processStore); var result = sbProcess.Kill(); return(Task.FromResult(new KillResponse { Result = result })); }
// Continues the process. // Returns true if successful, false otherwise. public override Task <ContinueResponse> Continue(ContinueRequest request, ServerCallContext contest) { var sbProcess = GrpcLookupUtils.GetProcess(request.Process, processStore); var result = sbProcess.Continue(); return(Task.FromResult(new ContinueResponse { Result = result })); }
// Get the total number of threads in the thread list. public override Task <GetNumThreadsResponse> GetNumThreads(GetNumThreadsRequest request, ServerCallContext context) { SbProcess sbProcess = GrpcLookupUtils.GetProcess(request.Process, processStore); int numberThreads = sbProcess.GetNumThreads(); return(Task.FromResult(new GetNumThreadsResponse { NumberThreads = numberThreads })); }
public override Task <SetSelectedThreadByIdResponse> SetSelectedThreadById( SetSelectedThreadByIdRequest request, ServerCallContext context) { var sbProcess = GrpcLookupUtils.GetProcess(request.Process, processStore); var success = sbProcess.SetSelectedThreadById(request.ThreadId); return(Task.FromResult(new SetSelectedThreadByIdResponse { Success = success })); }
public override Task <GetLoadAddressResponse> GetLoadAddress(GetLoadAddressRequest request, ServerCallContext context) { var section = sectionStore.GetObject(request.Section.Id); var target = GrpcLookupUtils.GetTarget(request.Target, targetStore); return(Task.FromResult( new GetLoadAddressResponse { LoadAddress = section.GetLoadAddress(target.GetSbTarget()) })); }
public override Task <RemoveModuleResponse> RemoveModule(RemoveModuleRequest request, ServerCallContext context) { RemoteTarget target = GrpcLookupUtils.GetTarget(request.Target, _targetStore); SbModule module = _moduleStore.GetObject(request.Module.Id); return(Task.FromResult( new RemoveModuleResponse { Result = target.RemoveModule(module) })); }
public override Task <GetTargetResponse> GetTarget(GetTargetRequest request, ServerCallContext context) { SbProcess sbProcess = GrpcLookupUtils.GetProcess(request.Process, processStore); var target = sbProcess.GetTarget(); var grpcSbThread = new GrpcSbTarget { Id = target.GetId() }; return(Task.FromResult(new GetTargetResponse { Target = grpcSbThread })); }
public override Task <SetModuleLoadAddressResponse> SetModuleLoadAddress( SetModuleLoadAddressRequest request, ServerCallContext context) { RemoteTarget target = GrpcLookupUtils.GetTarget(request.Target, _targetStore); SbModule module = _moduleStore.GetObject(request.Module.Id); SbError error = target.SetModuleLoadAddress(module, request.SectionsOffset); var grpcError = new GrpcSbError { Success = error.Success(), Error = error.GetCString() }; return(Task.FromResult(new SetModuleLoadAddressResponse { Error = grpcError })); }
public override Task <AddModuleResponse> AddModule(AddModuleRequest request, ServerCallContext context) { RemoteTarget target = GrpcLookupUtils.GetTarget(request.Target, _targetStore); var response = new AddModuleResponse(); SbModule module = target.AddModule(request.Path, request.Triple, request.Uuid); if (module != null) { response.Module = new GrpcSbModule { Id = _moduleStore.AddObject(module) }; } return(Task.FromResult(response)); }
public override Task <ResolveLoadAddressResponse> ResolveLoadAddress( ResolveLoadAddressRequest request, ServerCallContext context) { RemoteTarget target = GrpcLookupUtils.GetTarget(request.Target, _targetStore); var response = new ResolveLoadAddressResponse(); SbAddress address = target.ResolveLoadAddress(request.Address); if (address != null) { response.Address = new GrpcSbAddress { Id = _addressStore.AddObject(address), }; } return(Task.FromResult(response)); }
// Returns the currently selected thread. public override Task <GetSelectedThreadResponse> GetSelectedThread( GetSelectedThreadRequest request, ServerCallContext context) { var sbProcess = GrpcLookupUtils.GetProcess(request.Process, processStore); var sbThread = sbProcess.GetSelectedThread(); var grpcSbThread = new GrpcSbThread(); if (sbThread != null) { var remoteThread = remoteThreadFactory.Create(sbThread); grpcSbThread.Id = threadStore.AddObject(remoteThread); } return(Task.FromResult(new GetSelectedThreadResponse { Thread = grpcSbThread })); }
public override Task <GetUnixSignalsResponse> GetUnixSignals( GetUnixSignalsRequest request, ServerCallContext context) { var sbProcess = GrpcLookupUtils.GetProcess(request.Process, processStore); var signals = sbProcess.GetUnixSignals(); var response = new GetUnixSignalsResponse(); if (signals != null) { response.Signals = new GrpcSbUnixSignals { Id = signalsStore.AddObject(signals) }; } return(Task.FromResult(response)); }
public override Task <GetInstructionsResponse> GetInstructions( GetInstructionsRequest request, ServerCallContext context) { var function = functionStore.GetObject(request.Function.Id); var target = GrpcLookupUtils.GetTarget(request.Target, targetStore); var instructions = function.GetInstructions(target.GetSbTarget()); var response = new GetInstructionsResponse(); if (instructions != null) { response.Instructions.Add( instructions.Select(s => new GrpcSbInstruction { Id = instructionStore.AddObject(s) })); } return(Task.FromResult(response)); }
public override Task <WriteMemoryResponse> WriteMemory( WriteMemoryRequest reqeust, ServerCallContext context) { var sbProcess = GrpcLookupUtils.GetProcess(reqeust.Process, processStore); SbError error; var sizeWrote = sbProcess.WriteMemory(reqeust.Address, reqeust.Buffer.ToByteArray(), reqeust.Size, out error); return(Task.FromResult(new WriteMemoryResponse { Error = new GrpcSbError { Success = error.Success(), Error = error.GetCString() }, Size = sizeWrote })); }
public override Task <LoadCoreResponse> LoadCore(LoadCoreRequest request, ServerCallContext context) { RemoteTarget target = GrpcLookupUtils.GetTarget(request.Target, _targetStore); SbProcess process = target.LoadCore(request.CorePath); var response = new LoadCoreResponse(); if (process != null) { if (!_processStore.TryAdd(process.GetUniqueId(), process)) { ErrorUtils.ThrowError(StatusCode.Internal, "Could not add process to store: " + process.GetUniqueId()); } response.Process = new GrpcSbProcess { Id = process.GetUniqueId() }; } return(Task.FromResult(response)); }
public override Task <ReadMemoryResponse> ReadMemory( ReadMemoryRequest request, ServerCallContext context) { var sbProcess = GrpcLookupUtils.GetProcess(request.Process, processStore); var buffer = new byte[request.Size]; SbError error; var sizeRead = sbProcess.ReadMemory( request.Address, buffer, request.Size, out error); var response = new ReadMemoryResponse { Error = new GrpcSbError { Success = error.Success(), Error = error.GetCString(), }, Memory = ByteString.CopyFrom(buffer), Size = sizeRead }; return(Task.FromResult(response)); }