In this page, we will show the various classes available through the Python API.
Represents a logical address.
__init__(segment, offset)
Create a logical address from a segment and an offset.
segment | Segment selector of the logical address -> integer |
offset | Virtual offset of the logical address -> integer |
Member | Type | Documentation |
---|---|---|
segment | integer | Segment selector |
offset | integer | Offset |
A range of logical addresses.
__init__(segment=0, offset=0, size=0)
Create a logical address range from a segment, an address, and a size.
segment | Segment selector of the logical address -> integer |
offset | Virtual offset of the logical address -> integer |
size | size of the logical address range -> integer |
__init__(start, end)
Create a logical address range from two logical addresses.
start | Logical address marking the beginning of the range. -> logical_address |
end | Logical address marking the end of the range. -> logical_address |
Member | Type | Documentation |
---|---|---|
start | logical_address | Start of the range |
end | logical_address | End of the range |
Represents a physical address.
__init__(offset)
Create a physical address with an offset.
offset | Physical offset of the address in main RAM -> integer |
Member | Type | Documentation |
---|---|---|
paged | boolean | True if the physical address represents a successfully translated address. |
offset | integer | Offset |
Tells the state of the current analysis.
Member | Type | Documentation |
---|---|---|
busy | boolean | Is an analysis in progress ? |
max_tsc | integer | Max TSC |
text | string | Text of the progress |
current_sequence | integer | Current sequence |
max_sequences | integer | Max number of sequences |
current_tsc | integer | Current TSC |
Report of errors.
Member | Type | Documentation |
---|---|---|
binary_name | string | Name of the binary |
bugs | list(bug) | List of bugs in this binary |
A bug or vulnerability found by Reven.
Member | Type | Documentation |
---|---|---|
severity | string | Severity of the bug |
cwe_id | integer | Identifier of this bug in the CWE database |
symbol_name | string | Symbol name where the bug occurred |
description | string | Description of the bug |
cwe_description | string | Description of this bug in the CWE database |
A bug or vulnerability found by Reven.
Member | Type | Documentation |
---|---|---|
static_location | bug_static_location | Static location of the bug |
type | bug_type | Type of the bug |
occurrences | list(bug_occurrence) | Occurrences of the bug |
Dynamic bug location.
Member | Type | Documentation |
---|---|---|
instruction | integer | Instruction index in sequence |
sequence | integer | Sequence index in run |
run_id | integer | Run id |
Map id to strings for bug reports
Member | Type | Documentation |
---|---|---|
symbols | dict(std::uint64_t -> string) | Symbol name by symbol id |
runs | dict(std::uint64_t -> string) | Run name by run id |
binaries | dict(std::uint64_t -> string) | Binary name by binary id-> dict() |
A bug or vulnerability occurrence found by Reven.
Member | Type | Documentation |
---|---|---|
severity | bug_severity | Severity of the occurrence |
description | string | Description of the occurrence |
location | bug_dynamic_location | Dynamic location of the occurrence |
Bug report
Member | Type | Documentation |
---|---|---|
bugs | list(bug_bug) | Bugs |
metadata | bug_metadata | metadata |
Bug severity.
Enum | Documentation |
---|---|
high | High severity |
unknown | Unknown severity |
medium | Medium severity |
low | Low severity |
Static bug location
Member | Type | Documentation |
---|---|---|
binary_id | integer | Binary id |
symbol_id | integer | Symbol id |
Bug type.
Enum | Documentation |
---|---|
memory_leak | Memory leak |
double_free | Double free |
unknown | Unknown bug type |
invalid_free | Invalid free |
use_after_free | Use after free |
deref_not_checked | Dereferencing not checked |
null_pointer | Null pointer dereference |
heap_overflow | Heap-based buffer overflow |
Level type of log message.
Enum | Documentation |
---|---|
warning | Warning log |
general | General log |
success | Success log |
error | Error log |
Represents a Reven log or limitation.
Member | Type | Documentation |
---|---|---|
message | string | Message |
type | level_type | Type |
location | execution_point | Location if available |
Name and date of a saved state.
Member | Type | Documentation |
---|---|---|
timestamp | string | When the state was saved |
name | string | Name of the state |
Status of disk usage on server
Member | Type | Documentation |
---|---|---|
available | integer | Actual available disk capacity (free amount minus system reserved). |
capacity | integer | Total disk capacity. |
free | integer | Free disk capacity |
File chunk.
Member | Type | Documentation |
---|---|---|
content | list(byte) | Chunk data content |
chunk_start | integer | Chunk start address |
filename | string | Name of file owning this chunk |
Information about a project file.
Member | Type | Documentation |
---|---|---|
last_modified | integer | Timestamp of last modification |
description | string | File description |
filename | string | Filename |
Handles the connection to Reven launcher.
`__init__(host='localhost', port=8080)`
Create a launcher connection with the specified host and port.
host | Host to connect -> string |
port | Port to connect -> integer |
project_create(project)
Create a new project.
project | Project id (user, project name). -> project_id |
server_launch(project, launch_config)
Launch Reven server for given project and return server port.
project_id = reven_api.project_id('example', 'test') port1 = launcher.server_launch(project_id) # first server launched on port1 port2 = launcher.server_launch(project_id) # second server launched on port2
From there, you can kill unwanted duplicates with launcher_connection.server_kill(port)
. However, there is currently no practical way of knowing which server was launched first (in particular, the most recent server does not necessarily have the highest port). The safest way to fix duplicate problems is to prevent them from happening.You can do this by checking if a server is already launched before starting a new one:
project | id of project to launch. -> project_id |
launch_config | launch configuration (license, port, etc.). -> reven_launch_config |
list_vms()
Request list of available Virtual Machine configurations.
project_rename_file(project, filename, new_filename)
Rename an input file from a project.
import reven_launcher from os.path import basename def project_upload_and_rename_file(launcher, project_id, path, new_name): launcher.project_upload_file(project_id, path) ~~~
project | Project id (user, project name). -> project_id |
filename | Name of file to rename. -> string |
new_filename | New name for given file. -> string |
project_rename(project, new_project)
Rename a project.
project | Id of project to rename. -> project_id |
new_project | New project id (user, project name). -> project_id |
list_servers()
Request list of running Reven servers.
project_details(project)
Retrieve server information of a project.
project | Project id (user, project name). -> project_id |
project_scenario(project)
Retrieve scenario recording status for a project.
project | Project id (user, project name). -> project_id |
project_delete(project)
Delete a project.
project | Project id (user, project name). -> project_id |
system_licenses_info()
Return licenses usage.
project_remove_file(project, filename)
Remove an input file from a project.
project | Project id (user, project name). -> project_id |
filename | Name of file to remove. -> string |
project_abort_scenario_recording(project)
Abort current scenario recording for a project.
project | Project id (user, project name). -> project_id |
list_projects(user)
Request list of projects for given user.
user | Name of user to request projects from -> string |
list_users()
Request list of reven users.
project_record_scenario(project, scenario)
Record a scenario.
project | Project id (user, project name). -> project_id |
scenario | Scenario configuration. -> scenario_recording_config |
server_kill(port)
Kill Reven server by port.
port | Port of Reven server. -> integer |
project_list_files(project)
List input files of a project.
project | Project id (user, project name). -> project_id |
project_download_file(project, filename)
Download and return a file chunk.
project | Project id (user, project name). -> project_id |
filename | Name of file to download. -> string |
server_restart(port)
Restart Reven server by port, return new server port.
port | Port of Reven server. -> integer |
system_disk_info()
Return disk usage.
project_upload_file(project, filepath)
Upload input file to a project.
project | Project id (user, project name). -> project_id |
filepath | Path of the file to upload. -> string |
project_download_file_as(project, filename, destination)
Download a file to a client side location.
project | Project id (user, project name). -> project_id |
filename | Name of file to download. -> string |
destination | Filepath to save downloaded file as. -> string |
server_unblock(port)
Unblock Reven server by port (stop current service).
port | Port of Reven server. -> integer |
Status of license availability
Member | Type | Documentation |
---|---|---|
team_left | integer | Number of available team lincenses |
mono_left | integer | Number of available mono lincenses |
mono_total | integer | Total number of mono licenses |
team_total | integer | Total number of team licenses |
Identify a project by its username and project name pair.
__init__(user, project)
Create a project id from a user and a project name.
user | Username -> string |
project | Project name -> string |
Member | Type | Documentation |
---|---|---|
project | string | Project name |
user | string | Username |
Reven launch configuration.
Member | Type | Documentation |
---|---|---|
reven_arguments | string | Arguments given to Reven server |
is_mono | boolean | True if license is restricted to one connected user |
port | integer | Port listening to |
Configuration of a Reven scenario.
Member | Type | Documentation |
---|---|---|
binary_dump_hint | string | Dump hint (symbol or address) |
system_pdb_path | string | Pdb path (generated from vm configuration) |
binary_name | string | Name of analysed binary |
vm_config_name | string | Name of virtual machine configuration |
binary_arguments | string | Arguments passed to binary |
binary_dump_address | string | Effective dump address (generated from dump hint)-> string |
Information required to launch a scenario recording.
Member | Type | Documentation |
---|---|---|
recording | scenario_recording_launch_config | Dynamic (volatile) information to launch scenario recording |
scenario | scenario_config | Static information (binary configuration) for scenario recording |
Status of scenario recording.
Member | Type | Documentation |
---|---|---|
core_name | string | Core name used for recording |
is_recording | boolean | True if recording is running |
is_successful | boolean | True if recording was successful |
log_chunk | string | Current log |
Dynamic information required to launch a scenario recording.
Member | Type | Documentation |
---|---|---|
vnc_port | string | Vnc port to run vm's vnc server |
vnc_password | string | Vnc password to use for vm's vnc server |
is_interactive | boolean | Enable interactive mode (no preloader scenario auto recording) |
Reven server info.
Member | Type | Documentation |
---|---|---|
project | project_id | Project id |
reven_server | reven_launch_config | Launch configuration |
scenario | scenario_config | Scenario configuration |
Configuration of a Virtual Machine used for scenario recording.
Member | Type | Documentation |
---|---|---|
pdb_path | string | Path to pdb matching vm system |
dynamic_launch | string | Launch prefix for dynamic binaries |
stopper | string | Stopper program to call for stopping the vm |
name | string | Name of configuration |
static_launch | string | Launch prefix for static binaries-> string |
vbox_name | string | Name of the vm in VirtualBox |
os | string | OS installed on the vm |
vnc_port | string | Port to launch VNC server on |
vnc_password | string | Password of VNC server |
segment | string | Default segment for dump address |
display | string | Display string used in GUI |
Represents a binary memory mapping
Member | Type | Documentation |
---|---|---|
start | integer | start address |
base | integer | base address |
end | integer | end address |
Represents a library in a project.
Member | Type | Documentation |
---|---|---|
symbols | list(symbol) | Symbols in this binary |
mapping | dict(std::uint64_t -> list(address_space)) | Memory mapping of this binary |
name | string | Name of the library |
Represents the project binaries information.
Member | Type | Documentation |
---|---|---|
libraries_information | list(library_information) | Symbols in this binary |
A symbol.
__init__(name, rva)
Create a mini_symbol.
name | Name of the symbol -> string |
rva | Relative virtual address of the symbol -> integer |
Member | Type | Documentation |
---|---|---|
rva | integer | Symbol rva |
name | string | Symbol name |
Represents a register with a floating point value.
Member | Type | Documentation |
---|---|---|
defined | boolean | True if the register has valid value |
value | string | Value of the register |
Represents a part of or a full page of memory.
Member | Type | Documentation |
---|---|---|
paged | boolean | The page is mapped in physical memory |
logical_address | logical_address | Logical address of the start of the page |
bytes | list(byte) | Bytes of the page |
physical_address | physical_address | Physical address of the start of the page |
size | integer | Size of the page chunk |
Represents a register with a numeric value.
Member | Type | Documentation |
---|---|---|
defined | boolean | True if the register has valid value |
type | symbolic_type | Type of the register |
value | integer | Value of the register |
Represents the context of the machine at a point in time.
read_byte(address)
Read a byte from an address
address | Logical address to read -> logical_address |
is_paged(address)
Is the page mapped in physical memory?
address | Logical address to check -> logical_address |
physical_address(address)
Returns the physical address of an address
address | Logical address to translate -> logical_address |
Member | Type | Documentation |
---|---|---|
memory_pages | list(memory_page_chunk) | Memories |
vector_registers | dict(string -> vector_register) | Registers with a vector value |
float_registers | dict(string -> float_register) | Registers with a float value |
numeric_registers | dict(string -> numeric_register) | Registers with a numeric value |
Represents the context of the machine between two points in time.
Member | Type | Documentation |
---|---|---|
after | running_context | Final state |
before | running_context | Initial state |
Represents a symbolic value.
__init__(address, size)
Create a symbolic physical memory buffer.
address | Physical address of the symbolic value -> physical_address |
size | Size of the buffer in bytes -> integer |
__init__(name, size=0)
Create a symbolic register.
name | The register name -> string |
size | The register size in bytes -> integer |
Member | Type | Documentation |
---|---|---|
read_only | boolean | Read only |
physical_address | physical_address | Physical address |
name | string | Name |
content | string | Content |
type | symbolic_type | Type |
size | integer | Size of the access |
Represents an aggregated delta context of the symbolic memories and registers between two points.
Member | Type | Documentation |
---|---|---|
memories | list(symbolic) | Memories |
registers | list(symbolic) | Registers |
Type of a symbolic variable. For registers, this also specifies the group of register.
Enum | Documentation |
---|---|
register_internal | Internal registers (EIP, CR registers, etc) |
data_named | User-chosen named value |
register_flag | General purpose flags (does not contain FPU flags) |
memory | Memory access |
register_index | Index registers (xSI and xDI) |
unknown | Unknown symbolic type |
register_fpu | Floating point registers (R0-7 ; contains ST0-7 and MM0-7) and FPU flags |
register_segment | Segment registers (CS, DS, ES, FS, GS) |
memory_physical | Direct memory access |
computation | Operation between two symbolics |
register_sse | SSE registers (XMM etc) |
register_stack | Stack registers (xBP and xSP) |
integer | Integer value |
floating | Floating point value |
register_all_purpose | All purpose register (xAX, xBX, xCX, xDX) |
register_debug | Debug registers |
data_vector_part | Vector register |
Represents a register with a floating point value.
Member | Type | Documentation |
---|---|---|
defined | boolean | True if the register has valid value |
value | string | Value of the register |
Occurs when a connection fails due to no license being available.
Member | Type | Documentation |
---|---|---|
message | string | None |
args | tuple | None |
Occurs when a service is called during execution, if the service is not allowed to be called during execution.
Member | Type | Documentation |
---|---|---|
message | string | None |
args | tuple | None |
A hardware device with port and memory ranges.
Member | Type | Documentation |
---|---|---|
port_ranges | list(port_range) | Port ranges of this device |
description | string | Description of device |
name | string | Name of the device |
memory_ranges | list(memory_range) | Memory ranges of this device |
An access to a device.
Member | Type | Documentation |
---|---|---|
subdevice_name | string | Subdevice name |
physical_address | physical_address | If not is_port, contains the physical_address, otherwise 0 |
is_port | boolean | If true, this is a port access |
logical_address | logical_address | If not is_port, contains the logical_address, otherwise 0 |
device_name | string | Device name |
write | boolean | If true, this is a write |
location | execution_point | Location of the access |
port | integer | If is_port, contains the port index, otherwise 0 |
description | string | Textual information of what happened |
Information about the framebuffer.
Member | Type | Documentation |
---|---|---|
width | integer | Width in pixels of the framebuffer |
total_size | integer | Total size of the framebuffer in bytes |
line_size | integer | Bytes per line (may be higher than width*bpp/8) |
height | integer | Height in pixels of the framebuffer |
bpp | integer | Number of bits per pixels |
address | physical_address | Physical address of the framebuffer in memory |
A memory range used by a device.
Member | Type | Documentation |
---|---|---|
physical_address | physical_address | Start address in physical mode |
length | integer | Length of the range, in bytes |
description | string | Description of the memory range |
A port range used by a device.
Member | Type | Documentation |
---|---|---|
length | integer | Length of the range, in ports |
description | string | Description of the port range |
port | integer | Start port |
Base class for inspectors
Various types of arguments available to inspectors
Enum | Documentation |
---|---|
int_16 | A integer value on 16 bits |
boolean | A boolean value |
string | A string value |
int_64 | A integer value on 64 bits |
int_32 | A integer value on 32 bits |
Represents an argument of an inspector.
Member | Type | Documentation |
---|---|---|
type | inspector_arg_type | Type of argument |
description | string | Argument description |
name | string | Argument name |
Represents the properties of an inspector.
Member | Type | Documentation |
---|---|---|
to_display | boolean | True if this inspector needs to be displayed in the client |
enabled | boolean | True if this inspector is scheduled for next execution/exploration |
explorator | boolean | True if this inspector can be used for exploration |
executor | boolean | True if this inspector can be used for execution |
debug | boolean | True if this inspector is only useful for debugging |
experimental | boolean | True if this inspector is experimental |
Represents the specifications of an inspector.
Member | Type | Documentation |
---|---|---|
properties | inspector_properties | Inspector properties (enabled...) |
arguments | list(inspector_argument) | Arguments for this inspector |
name | string | Name of the inspector |
description | string | Description of the inspector |
Will alter the program's execution. Is configured through the rerun widget in Axion.
__init__(arg2)
Initializes an alter_execution.
A command example would be #1_1(eax=1)
to force eax
to 1 on the second instruction of sequence #1
commands | Commands (automatically filled by rerun widget) -> string |
Allows to track a executions after memory write like self modifying code (requires inspector memory_range_history)
Allows to track the history of all memory accesses.
Allows to control when to stop the execution.
__init__(arg2, arg3, arg4)
Initializes an stop_execution.
stop_at_top_level | Leave once the starting function ends -> boolean |
symbol | Leave once a specific symbol is reached -> string |
sequence_number | Leave after translating this number of sequences -> integer |
Will look for and record all strings that are dereferenced throughout the execution.
__init__(arg2, arg3, arg4, arg5, arg6)
Initializes an string_history.
min_invalid_size | Minimum size non null-terminated strings must have to be considered -> integer |
min_valid_size | Minimum size null-terminated strings must have to be considered -> integer |
max_size | Maximum size of a string (allows to overlook temporary buffers) -> integer |
max_string_worker | Maximum size of current strings to consider and keep in RAM -> integer |
utf-16 | Will look for utf-16 strings as well. -> boolean |
POC for the ie_crash trace. Will track all the allocations, deallocations, deref and then detect memory errors (use after free, double free...) in Windows.
Represents a memory access.
Member | Type | Documentation |
---|---|---|
size | integer | Size of the memory access |
content | integer | Content of the memory after the access |
instruction_index | integer | Instruction index for this memory access |
run_id | integer | Run identifier where the memory access occurred |
read | boolean | True if the memory was accessed for reading |
timestamp | integer | Timestamp for this memory access |
tsc | integer | Tsc timestamp of the memory access |
logical | logical_address | Logical address used to access the memory |
allocation | boolean | True if this is an allocation type of access |
write | boolean | True if the memory was accessed for writing |
free | boolean | True if this is a deallocation type of access |
execution | boolean | True if the memory was accessed for execution |
physical | physical_address | Physical address used of the memory |
A segment in memory representing a part of/full binary.
__init__(base_address, start, size, binary)
Create a memory segment.
base_address | Base address where the binary is mapped -> integer |
start | Start address of the binary's segment in memory -> integer |
size | Size of the memory segment -> integer |
binary | Path of binary -> string |
Member | Type | Documentation |
---|---|---|
binary | string | Binary path |
start | integer | Start address of binary's segment in memory |
base_address | integer | Base address of the binary |
size | integer | Size of the memory segment |
A running process.
Member | Type | Documentation |
---|---|---|
address_spaces | list(process_address_space) | Address spaces |
cr3 | integer | Process cr3 |
pid | integer | Process identifier |
name | string | Process name |
An address space of a process.
Member | Type | Documentation |
---|---|---|
start | integer | Start of the address space |
end | integer | End of the address space |
name | string | Name of the mapped file |
base_address | integer | Base address of the address space |
A process switch during a run.
Member | Type | Documentation |
---|---|---|
cr3 | integer | New process CR3 |
pid | integer | New process identifier |
point | execution_point | Execution point when the switch occurred |
Execution point inside a trace.
__init__(run_name, sequence_identifier, instruction_index)
Create an execution point of the specified run point.
run_name | The name of the referenced run -> string |
sequence_identifier | Index of the sequence inside the run -> integer |
instruction_index | 0-based index of the instruction inside the sequence -> integer |
__init__(sequence_identifier, instruction_index=0)
Create an execution point of the point for the main run.
sequence_identifier | Index of the sequence inside the main run -> integer |
instruction_index | 0-based index of the instruction inside the sequence -> integer |
valid()
Returns true if the execution point is valid.
The execution point is only tested for its validity against the sequence identifier. More precisely, this function returns true if the sequence identifier is not the root sequence identifier.
Member | Type | Documentation |
---|---|---|
instruction_index | integer | Instruction index |
sequence_identifier | integer | Sequence identifier |
run_name | string | Name of the run |
An range of sequences or instructions inside an execution.
__init__(run_name, sequence_identifier, range=1, instruction_index=-1)
Create an execution range from the specified arguments.
run_name | The name of the referenced run -> string |
sequence_identifier | Index of the sequence inside the run -> integer |
range | Number of sequences or instructions in the range -> integer |
instruction_index | 0-based index of the instruction inside the sequence -> integer |
__init__(sequence_identifier, range, instruction_index)
Create an instruction-based execution range from the specified arguments (begins at the specified sequence/instruction and end after 'range' instructions).
sequence_identifier | Index of the sequence inside the main run -> integer |
range | Number of sequences or instructions in the range -> integer |
instruction_index | 0-based index of the instruction inside the sequence -> integer |
__init__(sequence_identifier, range=1)
Create a sequence-based execution range from the specified arguments (begins at the first instruction of the specified sequence and end at the beginning of 'sequence_identifier' + 'range'.
sequence_identifier | Index of the sequence inside the main run -> integer |
range | Number of sequences in the range -> integer |
begin()
Returns the start execution point of this range
valid()
Returns true if the execution point is valid.
The execution point is only tested for its validity against the sequence identifier. More precisely, this function returns true if the sequence identifier is not the root sequence identifier.
end()
Returns the end execution point of this range
Member | Type | Documentation |
---|---|---|
instruction_index | integer | Instruction index in the sequence, -1 if referencing the whole sequence |
range | integer | The range of values. Either an instruction range if instruction_index_ is positive, or a sequence range |
sequence_identifier | integer | Sequence identifier |
run_name | string | Name of the run |
Represents a sequence inside a run.
Member | Type | Documentation |
---|---|---|
has_bug | boolean | Sequence bug status |
index | integer | Sequence index |
run_id | integer | Run index |
has_children | boolean | Does this sequence have children ? |
sequence | mini_sequence | Sequence |
trace_infos | dict(integer -> string) | Trace information of the sequence |
children_have_bugs | boolean | Childrens sequences bug status |
first_child_symbol | symbol | Symbol of the first child |
symbol | symbol | Symbol of this sequence |
Represents a sequence with its instructions.
Member | Type | Documentation |
---|---|---|
sequence | sequence_in_run | Sequence |
instructions | list(instruction) | Instructions the sequence |
Criterion to search on.
WARNING: This object is an 'union-like' struct. The optional members to set depend on the value of the member 'type'.
Member | Type | Documentation |
---|---|---|
subdevice | string | Subdevice name (Valid if type == device)-> string |
pattern | string | The pattern to match (Valid if type == symbol/cbinary) |
effect | criterion_effect | Effect (Always valid) |
case_sensitive | boolean | Whether the match is case sensitive or not (Valid if type == symbol/cbinary) |
address | integer | Address (Valid if type == address) |
device | string | Device name (Valid if type == device) |
type | criterion_type | Type of the criterion (Always valid) |
accuracy | criterion_accuracy | Accuracy of the criterion (Valid if type == symbol/cbinary) |
Allows to define the accuracy of a criterion
Enum | Documentation |
---|---|
regexp | The criteria is a regular expression (POSIX). |
contains | The criteria is a part of the value to filter. |
exact | The criteria is the exact value to filter. |
Allows to tweak the meaning of a criterion
Enum | Documentation |
---|---|
invert_match | Inverts the meaning of the criteria (NOT) |
match | Normal meaning of the criteria |
Allows to define the type of a criterion
Enum | Documentation |
---|---|
device | The criterion is a device criterion. |
binary | The criterion is a binary criterion. |
symbol | The criterion is a symbol criterion. |
address | The criterion is a address criterion. |
Single result of a search.
Member | Type | Documentation |
---|---|---|
comment | string | Comment why the result matched |
sequence | sequence_in_run | Sequence of the result |
Criteria for a search.
__init__(filters, need_all=True)
Create a search request from the list of filters.
filters | A list of filters to add to the search initially -> list(criterion) |
need_all | True if you need all criteria (AND), False for an OR -> boolean |
__init__(filter)
Create search request from one filter.
filter | The filter to use for the search -> criterion |
Member | Type | Documentation |
---|---|---|
need_all | boolean | If true, all criteria need to match (AND), else any criteria need to match (OR) |
max_results | integer | Maximum number of results to return. 0 for infinite. |
max_sequences | integer | Maximum number of sequences to check. 0 for infinite. Acts on top of the range. |
criteria | list(criterion) | Criteria |
Result of a search.
Member | Type | Documentation |
---|---|---|
content | list(search_item) | Matching items |
remaining_range | execution_range | Range not checked due to a reached limit |
Represents an instruction.
Member | Type | Documentation |
---|---|---|
mnemonic | string | Mnemonic of the instruction |
operand_two | string | Second operand of the instruction, if applicable |
prefixes | string | Prefixes of the instruction |
operand_one | string | First operand of the instruction, if applicable |
raw_instruction | list(byte) | Raw instruction bytes. |
offset | integer | Offset of the instruction if memory |
size | integer | Size of the instruction in bytes |
operand_three | string | Third operand of the instruction, if applicable |
Store the data tainting context of an instruction.
Member | Type | Documentation |
---|---|---|
modifies_taint | boolean | Did this instruction modifies taint or not |
tainted_values | list(symbolic) | Tainted symbolics when this instruction is executed |
point | execution_point | The tainted instruction |
Store the taint propagation effect of an instruction.
Member | Type | Documentation |
---|---|---|
new | list(symbolic) | The untainted symbolics |
old | list(symbolic) | The newly tainted symbolics |
Sequence of instructions.
Member | Type | Documentation |
---|---|---|
symbol | symbol | Symbol of the sequence |
size | integer | Size of the sequence in bytes |
annotations | list(string) | Annotations added to this sequence |
address | logical_address | Address of the sequence |
A symbol inside of a binary.
__init__(name)
Create a symbol with a given name.
name | Name of the symbol to create -> string |
name_offset()
Combines the name and the offset into a single string.
Member | Type | Documentation |
---|---|---|
name | string | Main name of this symbol |
name_index | integer | Index of the selected name |
kernel_symbol | boolean | True if the symbol lies inside the kernel |
binary_name | string | Name of the binary that contains this symbol |
names | list(string) | Names |
offset | integer | Offset |
vma | integer | Virtual memory address of the symbol |
segment | integer | Segment selector of the logical address where the symbol is located |
html_documentation | string | Relative link to the html documentation if available |
List of symbols
Member | Type | Documentation |
---|---|---|
items | list(symbol) | List of items |
range_first_id | integer | First id of the returned chunk. |
collection_size | integer | Size of collection |
Store a taint propagation result.
Member | Type | Documentation |
---|---|---|
status | taint_status | The taint propagtion status |
diffs | dict(execution_point -> instruction_taint_diff) | The taint propagation effects |
last_tainted_point | execution_point | The last point reached |
Status of a taint propagation.
Enum | Documentation |
---|---|
unknown | Unknown taint status |
vanished | The taint propagation stopped because nothing is tainted anymore |
completed | The taint propagation completed without errors |
timeout | The taint propagation stopped because it took longer than permitted |
error | The taint propagation encountered an error |
Represents a string that's been accessed during the execution.
Member | Type | Documentation |
---|---|---|
content | string | String content |
creation_sequence | integer | Sequence id where this string was created |
valid_string | boolean | True if this string is valid |
unique_id | integer | Unique ID |
address | logical_address | String address |
Represents a string that's been accessed during the execution.
Member | Type | Documentation |
---|---|---|
symbols | list(string) | Symbol names of the string is accessed (same order as first list |
is_write | list(byte) | Booleans indicating if the string is written -> list(boolean) |
unique_id | integer | Unique ID |
sequences | list(integer) | Sequences where the string is accessed |
List of strings
Member | Type | Documentation |
---|---|---|
items | list(dereferenced_string) | List of items |
range_first_id | integer | First id of the returned chunk. |
collection_size | integer | Minimum known size of collection (actual size may be bigger) |