def update_socketcall_paramater(pid, params_addr, pos, value): logging.debug('We are going to update a socketcall_parameter') LONG_SIZE = 4 addr = params_addr + (pos * LONG_SIZE) logging.debug('Params addr: %x', params_addr) logging.debug('Specific parameter addr: %x', addr) value = int(value) logging.debug('Value: %d', value) tracereplay.poke_address(pid, addr, value) logging.debug('Re-extracting socketcall parameters') p = extract_socketcall_parameters(pid, params_addr, pos + 1) if p[pos] != value: raise ReplayDeltaError('Populated socketcall parameter value: ({}) ' 'was not updated to correct value: ({})' .format(p[pos], value))
def write_buffer(pid, address, value, buffer_length): writes = [value[i:i+4] for i in range(0, len(value), 4)] trailing = len(value) % 4 if trailing != 0: left = writes.pop() for i in writes: i = i[::-1] data = int(binascii.hexlify(i), 16) tracereplay.poke_address(pid, address, data) address = address + 4 if trailing != 0: address = address data = tracereplay.peek_address(pid, address) d = pack('i', data) d = left + d[len(left):] tracereplay.poke_address(pid, address, unpack('i', d)[0])