A reven project. This is the root api object.

Cache: Should the cache be outdated (new comments, start/resume/pause execution), refresh a project instance with the refresh method.

Method __init__ Connect to a Reven project.
Method host Property: The reven host.
Method port Property: The reven port.
Method is_connected Check the current connection status.
Method connect Connect to the reven host.
Method disconnect Disconnect from the reven host.
Method refresh Refreshes the current instance.
Method status Get the connection status string.
Method logs Get the logs generated during the execution of this project.
Method binaries Get the binaries present in the project.
Method reports Get the reports emitted by inspectors in the project.
Method devices Get the devices present in the trace.
Method framebuffer Get the framebuffer information.
Method processes Get the processes present in the project.
Method process Get a process by pid.
Method process_switches Get the process switches.
Method traces Get the available traces (main execution run and IRQs).
Method trace Get a trace by name.
Method search_memory_access Search for memory accesses.
Method taint Propagate a taint from an initial point in a given direction.
Method device_history Get the device accesses in the project.
Method saves Get a list of available saved executions.
Method save_execution Save the current execution. If a save with the same name already exists, it will be overwriten.
Method start_execution Start a new execution.
Method stop_execution Stop the running execution.
Method resume_execution Resume the stopped execution.
Method execution_status The execution progress.
Method map_memory_segment_into_process Map a memory segment into a process.
Method add_symbols_to_binary Add symbols to a binary.
Method __repr__ Undocumented
Method _init_logs
Method _init_binaries
Method _init_reports
Method _init_processes
Method _init_process_switches
Method _init_traces
Method _init_devices
def __init__(self, host, port):

Connect to a Reven project.

ParametershostThe reven host.
portThe reven port.
Raisesreven_api.LicenseErrorIf no license is available.
def _init_logs(self):
Raisesreven_api.ServiceNotAllowedDuringExecutionErrorIf this method is called during the execution.
RuntimeErrorIf the connection is lost, in case of bad input, or in case of internal service error.
def _init_binaries(self):
Raisesreven_api.ServiceNotAllowedDuringExecutionErrorIf this method is called during the execution.
RuntimeErrorIf the connection is lost, in case of bad input, or in case of internal service error.
def _init_reports(self):
Raisesreven_api.ServiceNotAllowedDuringExecutionErrorIf this method is called during the execution.
RuntimeErrorIf the connection is lost, in case of bad input, or in case of internal service error.
def _init_processes(self):
Raisesreven_api.ServiceNotAllowedDuringExecutionErrorIf this method is called during the execution.
RuntimeErrorIf the connection is lost, in case of bad input, or in case of internal service error.
def _init_process_switches(self):
Raisesreven_api.ServiceNotAllowedDuringExecutionErrorIf this method is called during the execution.
RuntimeErrorIf the connection is lost, in case of bad input, or in case of internal service error.
def _init_traces(self):
Raisesreven_api.ServiceNotAllowedDuringExecutionErrorIf this method is called during the execution.
RuntimeErrorIf the connection is lost, in case of bad input, or in case of internal service error.
def _init_devices(self):
RaisesRuntimeErrorIf the connection is lost, in case of bad input, or in case of internal service error.
@property
def host(self):

Property: The reven host.

@property
def port(self):

Property: The reven port.

def is_connected(self):

Check the current connection status.

ReturnsTrue, if the connection with the server is currently open. Otherwise, False.
Unknown Field: noraiseRuntimeErrorAny connection exception is caught in the method.
def connect(self):

Connect to the reven host.

Use this method after having called disconnect to renew a connection to the server.

RaisesRuntimeErrorIf the connection is lost, in case of bad input, or in case of internal service error.
def disconnect(self):

Disconnect from the reven host.

This method immediately closes the connection to the server. Use this method to avoid locking a license token by keeping connections longer than wanted.

NoteClosing the last connection to a REVEN server releases its license token.

After calling this method, the is_connected method will return False at least until the connect method is called.

After calling this method on a project, objects obtained from the project such as Point and Trace instances should not be used anymore. Calls to some of their methods may then raise RuntimeError exceptions.

def refresh(self):

Refreshes the current instance.

This cleans the current instance's cache, forcing it to query up-to-date information from the server.

def status(self):

Get the connection status string.

Returns"connected" if currently connected, "disconnected" otherwise.
def logs(self):

Get the logs generated during the execution of this project.

Note that the point will always point to the first instruction of the sequence involved in the log if any.

ReturnsA list of tuples describing the log level, message and associated point (or None).
Raisesreven_api.ServiceNotAllowedDuringExecutionErrorIf this method is called during the execution.
RuntimeErrorIf the connection is lost, in case of bad input, or in case of internal service error.
def binaries(self):

Get the binaries present in the project.

Returnsa dictionary that maps a binary path to its corresponding Binary object.
Raisesreven_api.ServiceNotAllowedDuringExecutionErrorIf this method is called during the execution.
RuntimeErrorIf the connection is lost, in case of bad input, or in case of internal service error.
def reports(self):

Get the reports emitted by inspectors in the project.

ReturnsA list of Report objects.
Raisesreven_api.ServiceNotAllowedDuringExecutionErrorIf this method is called during the execution.
RuntimeErrorIf the connection is lost, in case of bad input, or in case of internal service error.
def devices(self):

Get the devices present in the trace.

ReturnsA list of Device objects.
RaisesRuntimeErrorIf the connection is lost, in case of bad input, or in case of internal service error.
def framebuffer(self):

Get the framebuffer information.

ReturnsA FrameBuffer object.
def processes(self):

Get the processes present in the project.

ReturnsA list of Process objects.
Raisesreven_api.ServiceNotAllowedDuringExecutionErrorIf this method is called during the execution.
RuntimeErrorIf the connection is lost, in case of bad input, or in case of internal service error.
def process(self, pid):

Get a process by pid.

ReturnsThe Process object of the given pid. If none if found, None.
Raisesreven_api.ServiceNotAllowedDuringExecutionErrorIf this method is called during the execution.
RuntimeErrorIf the connection is lost, in case of bad input, or in case of internal service error.
def process_switches(self):

Get the process switches.

ReturnsA list of ProcessSwitch objects.
Raisesreven_api.ServiceNotAllowedDuringExecutionErrorIf this method is called during the execution.
RuntimeErrorIf the connection is lost, in case of bad input, or in case of internal service error.
def traces(self):

Get the available traces (main execution run and IRQs).

ReturnsA list of Trace objects.
Raisesreven_api.ServiceNotAllowedDuringExecutionErrorIf this method is called during the execution.
RuntimeErrorIf the connection is lost, in case of bad input, or in case of internal service error.
def trace(self, name):

Get a trace by name.

ReturnsThe Trace object of requested name. If none if found, None.
Raisesreven_api.ServiceNotAllowedDuringExecutionErrorIf this method is called during the execution.
RuntimeErrorIf the connection is lost, in case of bad input, or in case of internal service error.
def search_memory_access(self, addr, size):

Search for memory accesses.

ParametersaddrThe first address in the searched **physical** memory range.
sizeThe size of the searched memory range.
Returnsthe list of MemoryAccess objects which occurred in the specified physical memory range.
Raisesreven_api.ServiceNotAllowedDuringExecutionErrorIf this method is called during the execution.
RuntimeErrorIf the connection is lost, in case of bad input, or in case of internal service error.
def taint(self, begin, initial_taint, forward, count=0, timeout=1000):

Propagate a taint from an initial point in a given direction.

The propagation result is presented as a collection of taint modifications. This allows to get every propagation step but might be confusing for the user.

ParametersbeginThe initial point to start tainting from.
initial_taintA list of Symbolic objects considered tainted at the initial point.
forwardA boolean indicating the taint propagation direction.
countThe maximum number of taint propagations to perform. 0 means unlimited.
timeoutAn optional time limit in ms. 0 means no timeout, but beware that it can freeze the server for quite long.
ReturnsA taint propagation result object of type Taint.
Raisesreven_api.ServiceNotAllowedDuringExecutionErrorIf this method is called during the execution.
RuntimeErrorIf the connection is lost, in case of bad input, or in case of internal service error.
def device_history(self, device='', subdevice=''):

Get the device accesses in the project.

ParametersdeviceAn optional device name to match.
subdeviceAn optional subdevice name to match.
Returnsa list of DeviceAccess.
Raisesreven_api.ServiceNotAllowedDuringExecutionErrorIf this method is called during the execution.
RuntimeErrorIf the connection is lost, in case of bad input, or in case of internal service error.
def saves(self):

Get a list of available saved executions.

Raisesreven_api.ServiceNotAllowedDuringExecutionErrorIf this method is called during the execution.
RuntimeErrorIf the connection is lost, in case of bad input, or in case of internal service error.
def save_execution(self, name):

Save the current execution. If a save with the same name already exists, it will be overwriten.

Raisesreven_api.ServiceNotAllowedDuringExecutionErrorIf this method is called during the execution.
RuntimeErrorIf the connection is lost, in case of bad input, or in case of internal service error.
def start_execution(self, inspector_list=None):

Start a new execution.

Note that you can only start an execution if the project is awaiting configuration. If you wish to restart a new execution, you should restart the project.

Parametersinspector_listiterable collection of Inspector objects to configure the execution. If omitted, no inspector will be configured.
Raisesreven_api.ServiceNotAllowedDuringExecutionErrorIf this method is called during the execution.
RuntimeErrorIf the connection is lost, in case of bad input, or in case of internal service error.
AssertionErrorIf the project is not awaiting configuration.
ExceptionIf the same Inspector class appears several times in the inspector_list
def stop_execution(self):

Stop the running execution.

Note this is not blocking, and you should wait for execution_status().is_done to be True before doing anything else.

RaisesRuntimeErrorIf the connection is lost, in case of bad input, or in case of internal service error.
def resume_execution(self):

Resume the stopped execution.

Raisesreven_api.ServiceNotAllowedDuringExecutionErrorIf this method is called during the execution.
RuntimeErrorIf the connection is lost, in case of bad input, or in case of internal service error.
def execution_status(self):

The execution progress.

RaisesRuntimeErrorIf the connection is lost, in case of bad input, or in case of internal service error.
def map_memory_segment_into_process(self, cr3, segment, base_address=0):

Map a memory segment into a process.

Parameterscr3int representing the cr3 of the process where to map the memory segment.
segmentMemory Segment to map.
base_address(Optional) Base address of the binary the segment belongs to. If not applicable (for example for the stack), it defaults to the segment's address.
Raisesreven_api.ServiceNotAllowedDuringExecutionErrorIf this method is called during the execution.
RuntimeErrorIf the connection is lost, in case of bad input, or in case of internal service error.
def add_symbols_to_binary(self, binary, symbols):

Add symbols to a binary.

ParametersbinaryPath of the binary.
symbolslist of Symbol objects to add in the binary.
Raisesreven_api.ServiceNotAllowedDuringExecutionErrorIf this method is called during the execution.
RuntimeErrorIf the connection is lost, in case of bad input, or in case of internal service error.
def __repr__(self):
Undocumented
API Documentation for reven, generated by pydoctor at 2018-06-06 16:31:21.