The REVEN2 python API.

Provide a pythonic way to interact with a Reven server. This mainly provides an object oriented wrapper on the low level api, plus a few helper functions to make REVEN scripting more straightforward.

To use it, the first step is to connect to a running Reven server, for example on port 13370 of the host localhost:

>>> import reven2 as rvn2
>>> server = rvn2.RevenServer('localhost', 13370)

About properties

Field members in our python classes are typically encapsulated in properties. For instance, the private field RevenServer._host can be read from RevenServer.host. Properties are special methods that should not be called with parenthesis, e.g. RevenServer.host, not RevenServer.host(). To make this distinction clearer in our documentation, the documentation for a property always starts with the keyword Property: (e.g., see the properties host and port in RevenServer's documentation).

Changelog

Every notable changes to this api will be documented in this file.

Unreleased

2.2.1

  • Fixed an issue where the Instruction object would sometimes contain wrong operands for relative jmp
  • Improved the performance of the Context.read method up to x3 in typical workloads
  • Added a timeout argument to the String.memory_accesses method, allowing to specify how long this function should attempt to recover all accesses before raising an exception.
  • Modified Stack.backtrace property so that it returns a string instead of printing it.
  • Made the if register accessible from the API. Previously, attempting to access reven2.arch.x64.if would raise a SyntaxError, because if is a python keyword. You can now access the if register through reven2.arch.x64.if_.

2.2.0

  • Add trace package containing basic classes to navigate in a trace and inspect cpu registers and memory
  • Add search module containing basic objects to search interesting points in a trace
  • Add trace.Trace.memory_accesses and trace.Transition.memory_accesses to query memory accesses from the trace
  • Add memhist package containing MemoryAccess object
  • Add stack module containing basic objects to get interesting information on the stack like the backtrace
  • Add string module containing a basic `String` object to get interesting strings in the trace and their memory accesses
  • Add ossi package containing basic objects to get Operating System Semantic Information (OSSI)
  • Add types package containing various predefined types and type constructors
  • Add arch package containing the various x86_64 registers
  • Add address package containing representation of memory addresses
  • Add preview.project_manager package containing basic (incomplete) bindings to the REVEN project manager REST API
  • Add preview.taint package containing an experimental, simplified API for the taint
  • Add explicit relative imports, for Python 3 compatibility

2.0.0-dev

  • The API is currently in development
  • cleanup and rework of the RevenServer class (previously Project)

2.0.0-prerelease

  • The API is currently not available
Module address Defines memory address classes
Package arch Contains classes and instances related to the description of the machine architecture.
Module memhist No module docstring; 2/3 classes, 0/8 functions documented
Package ossi Package related to OSSI information. See the OssiContext object.
Module prelude This is the prelude module of the Reven2 python API
Package preview Contains subpackages and modules whose API is not considered stable yet.
Module search Module related to trace search. See the Search object.
Module stack Module related to stack. See the Stack object.
Module string Module related to strings in trace. See the String object.
Package trace Module related to the execution trace. See the Trace object.
Package types Contains classes and instances related to the description of data types.
Module util Module that provide util functions
API Documentation for reven2, generated by pydoctor at 2019-09-11 11:57:21.