diff --git a/plugins/vivisect-broker/Broker.cpp b/plugins/vivisect-broker/Broker.cpp index c572779..e7ef632 100644 --- a/plugins/vivisect-broker/Broker.cpp +++ b/plugins/vivisect-broker/Broker.cpp @@ -144,7 +144,7 @@ class VivisectBroker : public Broker { IndexMap[i] = TotalNumTraces; auto &InstrAddrCat = Registry[MD_InstrAddr]; - InstrAddrCat[TotalNumTraces] = MDInstrAddr { insn.addr() }; + InstrAddrCat[TotalNumTraces] = MDInstrAddr { insn.addr(), insn.size() }; if (insn.has_memory_access()) { auto MemAccess = insn.memory_access(); diff --git a/plugins/vivisect-broker/emulator.proto b/plugins/vivisect-broker/emulator.proto index c9e965b..d1bfe07 100644 --- a/plugins/vivisect-broker/emulator.proto +++ b/plugins/vivisect-broker/emulator.proto @@ -24,7 +24,8 @@ message EmulatorActions { message Instruction { bytes opcode = 1; uint64 addr = 2; - optional MemoryAccess memory_access = 3; - optional BranchFlow branch_flow = 4; + uint64 size = 3; + optional MemoryAccess memory_access = 4; + optional BranchFlow branch_flow = 5; } } diff --git a/plugins/vivisect-broker/grpc_client/grpc_client.py b/plugins/vivisect-broker/grpc_client/grpc_client.py index 3dfe9f4..e5e855b 100644 --- a/plugins/vivisect-broker/grpc_client/grpc_client.py +++ b/plugins/vivisect-broker/grpc_client/grpc_client.py @@ -23,6 +23,7 @@ def record_instruction(self, op, bytez): is_branch_ctr = op.opcode in BCTR_INSTR is_branch_lr = op.opcode in BLR_INSTR insn_addr = op.va + insn_size = op.size addr = None width = None @@ -56,13 +57,13 @@ def record_instruction(self, op, bytez): branch_arg = emulator_pb2.EmulatorActions.BranchFlow( is_mispredict=is_mispredict) - insn_arg = emulator_pb2.EmulatorActions.Instruction(opcode=opcode, addr=insn_addr) + insn_arg = emulator_pb2.EmulatorActions.Instruction(opcode=opcode, addr=insn_addr, size=insn_size) if mem_arg is not None: - insn_arg = emulator_pb2.EmulatorActions.Instruction(opcode=opcode, addr=insn_addr, + insn_arg = emulator_pb2.EmulatorActions.Instruction(opcode=opcode, addr=insn_addr, size=insn_size, memory_access=mem_arg) if branch_arg is not None: - insn_arg = emulator_pb2.EmulatorActions.Instruction(opcode=opcode, addr=insn_addr, + insn_arg = emulator_pb2.EmulatorActions.Instruction(opcode=opcode, addr=insn_addr, size=insn_size, branch_flow=branch_arg) action_arg = emulator_pb2.EmulatorActions(instructions=[insn_arg])