reven2
package documentationThe 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)
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).
Every notable changes to this api will be documented in this file.
tag0/tag1
to Tag0/Tag1
ProjectManager.hostname
and Project.port
properties
ProjectManager.connect
to connect to a REVEN project from its name
Instruction
object would sometimes contain wrong operands for relative
jmp
Context.read
method up to x3 in typical workloads
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.
Stack.backtrace
property so that it returns a string instead of printing it.
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_
.
trace
package
containing basic classes to navigate in a trace and inspect cpu
registers and memory
search
module
containing basic objects to search interesting points in a trace
trace.Trace.memory_accesses
and trace.Transition.memory_accesses
to query memory accesses from the trace
memhist
package
containing MemoryAccess
object
stack
module
containing basic objects to get interesting information on the
stack like the backtrace
string
module
containing a basic `String` object to get interesting strings in
the trace and their memory accesses
ossi
package
containing basic objects to get Operating System Semantic
Information (OSSI)
types
package
containing various predefined types and type constructors
arch
package
containing the various x86_64 registers
address
package
containing representation of memory addresses
preview.project_manager
package containing basic (incomplete) bindings to the REVEN project
manager REST API
preview.taint
package containing an experimental, simplified API for the taint
RevenServer
class (previously Project
)
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 |