Arion 1.0.2-alpha
A high-performance C++ framework for emulating executable binaries.
 
Loading...
Searching...
No Matches
arion::Arion Class Reference

An emulation unit associated with a process. More...

#include <arion.hpp>

Inheritance diagram for arion::Arion:

Public Member Functions

 ~Arion ()
 
void set_run_bounds (std::optional< ADDR > start=std::nullopt, std::optional< ADDR > end=std::nullopt)
 
void set_run_start (std::optional< ADDR > start)
 
void set_run_end (std::optional< ADDR > end)
 
bool run_current ()
 
void stop ()
 
void crash (std::exception_ptr exception)
 
void sync_threads ()
 
bool is_running ()
 
void init_afl_mode (std::vector< int > signals)
 
void stop_afl_mode ()
 
std::shared_ptr< Arioncopy ()
 
bool has_parent ()
 
std::shared_ptr< Arionget_parent ()
 
std::vector< std::shared_ptr< Arion > > get_children ()
 
std::vector< std::shared_ptr< Arion > > get_pgid_children (pid_t pgid)
 
pid_t add_child (std::shared_ptr< Arion > child)
 
bool has_child (pid_t child_pid)
 
bool is_child_of (pid_t parent_pid)
 
std::shared_ptr< Arionget_child (pid_t child_pid)
 
void replace_child (pid_t child_pid, std::shared_ptr< Arion > child)
 
void remove_child (pid_t child_pid)
 
void clear_children ()
 
void execve (std::string file_path, std::vector< std::string > argv, std::vector< std::string > envp)
 
std::vector< std::string > get_program_args ()
 
std::vector< std::string > get_program_env ()
 
pid_t get_pid ()
 
void set_pid (pid_t pid)
 
pid_t get_pgid ()
 
void set_pgid (pid_t pgid)
 
uint32_t get_sid ()
 
void set_sid (uint32_t sid)
 
uint32_t get_uid ()
 
void set_uid (uint32_t uid)
 
uint32_t get_gid ()
 
void set_gid (uint32_t gid)
 
uint32_t get_euid ()
 
void set_euid (uint32_t euid)
 
uint32_t get_egid ()
 
void set_egid (uint32_t egid)
 
bool has_group ()
 
std::shared_ptr< ArionGroupget_group ()
 
void set_group (std::shared_ptr< ArionGroup > group)
 
void reset_group ()
 
bool is_stopped ()
 
void set_stopped ()
 
void set_resumed ()
 
bool is_zombie ()
 
void set_zombie ()
 
void send_signal (pid_t source_pid, int signo)
 
void run_gdbserver (uint32_t port)
 

Static Public Member Functions

static std::shared_ptr< Arionnew_instance (std::vector< std::string > program_args, std::string fs_path="/", std::vector< std::string > program_env=std::vector< std::string >(), std::string cwd="", std::unique_ptr< Config > config=std::move(std::make_unique< Config >()))
 
static std::shared_ptr< Arionnew_instance (std::unique_ptr< BaremetalManager > baremetal, std::string fs_path="/", std::vector< std::string > program_env=std::vector< std::string >(), std::string cwd="", std::unique_ptr< Config > config=std::move(std::make_unique< Config >()))
 

Public Attributes

std::unique_ptr< ArchManagerarch
 ArchManager instance associated with this instance.
 
std::unique_ptr< BaremetalManagerbaremetal
 BaremetalManager instance associated with this instance.
 
std::unique_ptr< MemoryManagermem
 MemoryManager instance associated with this instance.
 
std::unique_ptr< FileSystemManagerfs
 FileSystemManager instance associated with this instance.
 
std::unique_ptr< SocketManagersock
 SocketManager instance associated with this instance.
 
std::unique_ptr< HooksManagerhooks
 HooksManager instance associated with this instance.
 
std::unique_ptr< ThreadingManagerthreads
 ThreadingManager instance associated with this instance.
 
std::unique_ptr< SignalManagersignals
 SignalManager instance associated with this instance.
 
std::unique_ptr< ContextManagercontext
 ContextManager instance associated with this instance.
 
std::unique_ptr< LinuxSyscallManagersyscalls
 LinuxSyscallManager instance associated with this instance.
 
std::unique_ptr< GdtManagergdt_manager
 GdtManager instance associated with this instance.
 
std::unique_ptr< CodeTracertracer
 CodeTracer instance associated with this instance.
 
std::unique_ptr< Loggerlogger
 Logger instance associated with this instance.
 
std::unique_ptr< Configconfig
 Config instance associated with this instance.
 
std::unique_ptr< LNX_LOADER_PARAMSloader_params
 Parameters related to the loader action.
 
std::vector< std::shared_ptr< SIGNAL > > pending_signals
 List of signals to be processed by this instance.
 
uc_engine * uc
 Unicorn engine related to this instance.
 
std::vector< ks_engine * > ks
 Keystone engine related to this instance.
 
std::vector< csh * > cs
 Capstone engine related to this instance.
 

Private Member Functions

void init_engines (CPU_ARCH arch)
 
void init_file_program (std::shared_ptr< ExecutableParser > prog_parser)
 
void init_baremetal_program ()
 
void init_dynamic_program (std::shared_ptr< ExecutableParser > prog_parser)
 
void init_static_program (std::shared_ptr< ExecutableParser > prog_parser)
 
void close_engines ()
 

Static Private Member Functions

static void new_instance_common_init (std::shared_ptr< Arion > arion, std::string fs_path="/", std::vector< std::string > program_env=std::vector< std::string >(), std::string cwd="", std::unique_ptr< Config > config=std::move(std::make_unique< Config >()))
 
static void new_instance_common_finish (std::shared_ptr< Arion > arion, CPU_ARCH arch)
 

Private Attributes

std::vector< std::string > program_args
 The program arguments of the emulated process, basically the "argv" array.
 
std::vector< std::string > program_env
 The program environment variables of the emulated process, basically the "envp" array.
 
std::weak_ptr< ArionGroupgroup
 The ArionGroup this process is associated with. Arion instances are emulated together through their group.
 
std::weak_ptr< Arionparent
 The Arion instance emulating the parent process of this process.
 
std::vector< std::weak_ptr< Arion > > children
 The Arion instances emulating the child processes of this process.
 
std::exception_ptr uc_exception = nullptr
 An Unicorn exception that occurred during execution and needs to be rethrown.
 
bool afl_mode = false
 True if this Arion instance is being run through the ArionAfl component.
 
std::vector< int > afl_signals
 List of UNIX signals that must be considered as process crashes when fuzzing with ArionAfl component.
 
std::optional< ADDRstart = std::nullopt
 Start address for the emulation.
 
std::optional< ADDRend = std::nullopt
 End address for the emulation.
 
bool running = false
 True if this instance is currently being run by its ArionGroup.
 
bool sync = false
 True if the emulation was stopped in order to synchronize the states of its threads.
 
bool stopped = false
 True if the emulation is currently stopped.
 
bool zombie = false
 True if the emulation has ended for this instance but not for its parent.
 
pid_t pid = 0
 The PID associated with the emulated process.
 
pid_t pgid = 0
 The PGID associated with the emulated process.
 
uint32_t sid = 0
 The SID associated with the emulated process.
 
uint32_t uid = 0
 The UID associated with the emulated process.
 
uint32_t gid = 0
 The GID associated with the emulated process.
 
uint32_t euid = 0
 The EUID associated with the emulated process.
 
uint32_t egid = 0
 The EGID associated with the emulated process.
 

Detailed Description

An emulation unit associated with a process.

Constructor & Destructor Documentation

◆ ~Arion()

arion::Arion::~Arion ( )

Destructor method for Arion instances, destroying related instances and engines, and releasing pointers.

Member Function Documentation

◆ add_child()

pid_t arion::Arion::add_child ( std::shared_ptr< Arion child)

Marks a process as a child of the process associated with this Arion instance.

Parameters
[in]childThe Arion instance which process is to be marked as a child of this process.

◆ clear_children()

void arion::Arion::clear_children ( )

Removes all processes in the "children" list of this Arion instance.

◆ close_engines()

void arion::Arion::close_engines ( )
private

Performs the destruction of engines related to CPU emulation, assembly and disassembly.

◆ copy()

std::shared_ptr< Arion > arion::Arion::copy ( )

Clone this Arion instance into a new one.

Returns
The new Arion instance.

◆ crash()

void arion::Arion::crash ( std::exception_ptr  exception)

Stops emulating the process associated with this Arion instance with an exception to be rethrown.

Parameters
[in]exceptionThe exception to be rethrown.

◆ execve()

void arion::Arion::execve ( std::string  file_path,
std::vector< std::string >  argv,
std::vector< std::string >  envp 
)

Replaces the image of the process associated with this Arion instance with a new one, like in the execv* syscalls.

Parameters
[in]file_pathPath to the file of the new process (executable).
[in]argvThe program arguments of the newly emulated process.
[in]envpThe program environment variables of the newly emulated process.

◆ get_child()

std::shared_ptr< Arion > arion::Arion::get_child ( pid_t  child_pid)

Retrieves a child process of the one associated with this Arion instance.

Parameters
[in]child_pidPID of the child process.
Returns
Arion instance associated with the child process.

◆ get_children()

std::vector< std::shared_ptr< Arion > > arion::Arion::get_children ( )

Retrieves the list of Arion instances which this process is a parent of.

Returns
The list of Arion instances which this process is a parent of.

◆ get_egid()

uint32_t arion::Arion::get_egid ( )

Retrieves the Effective Group ID (EGID) associated with this Arion instance.

Returns
The EGID.

◆ get_euid()

uint32_t arion::Arion::get_euid ( )

Retrieves the Effective User ID (EUID) associated with this Arion instance.

Returns
The EUID.

◆ get_gid()

uint32_t arion::Arion::get_gid ( )

Retrieves the Group ID (GID) associated with this Arion instance.

Returns
The GID.

◆ get_group()

std::shared_ptr< ArionGroup > arion::Arion::get_group ( )

Retrieves the ArionGroup instance associated with this Arion instance.

Returns
The ArionGroup instance associated with this Arion instance.

◆ get_parent()

std::shared_ptr< Arion > arion::Arion::get_parent ( )

Retrieves the Arion instance associated with the parent of this process.

Returns
The Arion instance associated with the parent of this process.

◆ get_pgid()

pid_t arion::Arion::get_pgid ( )

Retrieves the Process Group ID (PGID) associated with this Arion instance.

Returns
the PGID.

◆ get_pgid_children()

std::vector< std::shared_ptr< Arion > > arion::Arion::get_pgid_children ( pid_t  pgid)

Retrieves the list of Arion instances in a given PGID group and which this process is a parent of.

Parameters
pgidThe PGID group.
Returns
The list of Arion instances in a given PGID group and which this process is a parent of.

◆ get_pid()

pid_t arion::Arion::get_pid ( )

Returns the Process ID (PID) associated with this Arion instance.

Returns
The PID.

◆ get_program_args()

std::vector< std::string > arion::Arion::get_program_args ( )

Retrieves the program arguments associated with this Arion instance.

Returns
The program arguments.

◆ get_program_env()

std::vector< std::string > arion::Arion::get_program_env ( )

Retrieves the program environment variables associated with this Arion instance.

Returns
The program environment variables.

◆ get_sid()

uint32_t arion::Arion::get_sid ( )

Retrieves the Session ID (SID) associated with this Arion instance.

Returns
The SID.

◆ get_uid()

uint32_t arion::Arion::get_uid ( )

Retrieves the User ID (UID) associated with this Arion instance.

Returns
The UID.

◆ has_child()

bool arion::Arion::has_child ( pid_t  child_pid)

Checks whether a given process is a child of the one associated with this Arion instance.

Parameters
[in]child_pidPID of the process to be checked.
Returns
True if the given process is a child of the one associated with this Arion instance.

◆ has_group()

bool arion::Arion::has_group ( )

Checks whether this Arion instance is part of an ArionGroup instance.

Returns
True if this Arion instance is part of an ArionGroup instance.

◆ has_parent()

bool arion::Arion::has_parent ( )

Checks whether the process emulated by this Arion instance is the child of another instance.

Returns
True if the process emulated by this Arion instance is the child of another instance.

◆ init_afl_mode()

void arion::Arion::init_afl_mode ( std::vector< int >  signals)

Initialize this Arion instance with parameters related to AFL fuzzing.

Parameters
[in]signalsThe list of signals which will be considered as crashes during the fuzzing session.

◆ init_baremetal_program()

void arion::Arion::init_baremetal_program ( )
private

Performs the initialization steps specific to a baremetal process.

◆ init_dynamic_program()

void arion::Arion::init_dynamic_program ( std::shared_ptr< ExecutableParser prog_parser)
private

Performs the initialization steps specific to a dynamic process.

Parameters
[in]prog_parserThe ExecutableParser instance that analyzed the program file.

◆ init_engines()

void arion::Arion::init_engines ( CPU_ARCH  arch)
private

Performs the initialization of engines related to CPU emulation, assembly and disassembly.

Parameters
[in]TheCPU architecture to be emulated for this process.

◆ init_file_program()

void arion::Arion::init_file_program ( std::shared_ptr< ExecutableParser prog_parser)
private

Performs the initialization steps specific to a file based process (executable).

Parameters
[in]prog_parserThe ExecutableParser instance that analyzed the program file.

◆ init_static_program()

void arion::Arion::init_static_program ( std::shared_ptr< ExecutableParser prog_parser)
private

Performs the initialization steps specific to a static process.

Parameters
[in]prog_parserThe ExecutableParser instance that analyzed the program file.

◆ is_child_of()

bool arion::Arion::is_child_of ( pid_t  parent_pid)

Checks whether a given process is the parent of the one associated with this Arion instance.

Parameters
[in]parent_pidPID of the process to be checked.
Returns
True if the given process is the parent of the one associated with this Arion instance.

◆ is_running()

bool arion::Arion::is_running ( )

Checks whether the process related to this Arion instance is currently being emulated.

Returns
True if the process related to this Arion instance is currently being emulated.

◆ is_stopped()

bool arion::Arion::is_stopped ( )

Checks whether the emulation is currently stopped.

Returns
True if the emulation is currently stopped.

◆ is_zombie()

bool arion::Arion::is_zombie ( )

Checks whether the emulation has ended for this instance but not for its parent.

Returns
True if the emulation has ended for this instance but not for its parent.

◆ new_instance() [1/2]

static std::shared_ptr< Arion > arion::Arion::new_instance ( std::unique_ptr< BaremetalManager baremetal,
std::string  fs_path = "/",
std::vector< std::string >  program_env = std::vector< std::string >(),
std::string  cwd = "",
std::unique_ptr< Config config = std::move(std::make_unique< Config >()) 
)
static

Initialization method of Arion instances for baremetal programs.

Parameters
[in]baremetalA BaremetalManager instance containing parameters to initialize this Arion instance.
[in]fs_pathPath to the root directory for the file system of the emulated process (optional).
[in]program_envThe program environment variables of the emulated process, basically the "envp" array (optional).
[in]cwdThe current working directory for the emulated process (optional).
[in]configAn instance of Config associated with this Arion instance (optional).
Returns
The initialized Arion instance.

◆ new_instance() [2/2]

static std::shared_ptr< Arion > arion::Arion::new_instance ( std::vector< std::string >  program_args,
std::string  fs_path = "/",
std::vector< std::string >  program_env = std::vector< std::string >(),
std::string  cwd = "",
std::unique_ptr< Config config = std::move(std::make_unique< Config >()) 
)
static

Initialization method of Arion instances for file programs (executables).

Parameters
[in]program_argsThe program arguments of the emulated process, basically the "argv" array.
[in]fs_pathPath to the root directory for the file system of the emulated process (optional).
[in]program_envThe program environment variables of the emulated process, basically the "envp" array (optional).
[in]cwdThe current working directory for the emulated process (optional).
[in]configAn instance of Config associated with this Arion instance (optional).
Returns
The initialized Arion instance.

◆ new_instance_common_finish()

static void arion::Arion::new_instance_common_finish ( std::shared_ptr< Arion arion,
CPU_ARCH  arch 
)
staticprivate

Performs the final steps to initialize this Arion instance, no matter the nature of the emulated process.

Parameters
[in]arionThe arion instance being initialized.
[in]archThe CPU architecture to be emulated for this process.

◆ new_instance_common_init()

static void arion::Arion::new_instance_common_init ( std::shared_ptr< Arion arion,
std::string  fs_path = "/",
std::vector< std::string >  program_env = std::vector< std::string >(),
std::string  cwd = "",
std::unique_ptr< Config config = std::move(std::make_unique< Config >()) 
)
staticprivate

Performs the first steps to initialize this Arion instance, no matter the nature of the emulated process.

Parameters
[in]arionThe Arion instance being initialized.
[in]fs_pathPath to the root directory for the file system of the emulated process (optional).
[in]program_envThe program environment variables of the emulated process (optional), basically the "envp" array.
[in]cwdThe current working directory for the emulated process (optional).
[in]configAn instance of Config associated with this Arion instance (optional).

◆ remove_child()

void arion::Arion::remove_child ( pid_t  child_pid)

Unmarks a process from the "children" list of the process associated with this Arion instance.

Parameters
child_pidPID of the process to be unmarked from the "children" list of this process.

◆ replace_child()

void arion::Arion::replace_child ( pid_t  child_pid,
std::shared_ptr< Arion child 
)

Replace the Arion instance associated to a child PID in the "children" list of this instance.

Parameters
child_pidThe child PID.
childThe Arion instance associated to the child process.

◆ reset_group()

void arion::Arion::reset_group ( )

Sets this instance as part of no ArionGroup.

◆ run_current()

bool arion::Arion::run_current ( )

Starts emulating the process associated with this Arion instance.

Returns
True if the process has not ended yet.

◆ run_gdbserver()

void arion::Arion::run_gdbserver ( uint32_t  port)

Starts a GDB Server session on the given port.

Parameters
[in]portThe port.

◆ send_signal()

void arion::Arion::send_signal ( pid_t  source_pid,
int  signo 
)

Delivers a signal to be processed by this process.

Parameters
[in]source_pidThe Process ID delivering the signal to the process associated with this Arion instance.
[in]signoThe signal number.

◆ set_egid()

void arion::Arion::set_egid ( uint32_t  egid)

Defines the Effective Group ID (EGID) associated with this Arion instance.

Parameters
[in]egidThe new EGID.

◆ set_euid()

void arion::Arion::set_euid ( uint32_t  euid)

Defines the Effective User ID (EUID) associated with this Arion instance.

Parameters
[in]euidThe new EUID.

◆ set_gid()

void arion::Arion::set_gid ( uint32_t  gid)

Defines the Group ID (GID) associated with this Arion instance.

Parameters
[in]gidThe new GID.

◆ set_group()

void arion::Arion::set_group ( std::shared_ptr< ArionGroup group)

Defines the ArionGroup instance associated with this Arion instance.

Parameters
[in]groupThe new ArionGroup for this instance.

◆ set_pgid()

void arion::Arion::set_pgid ( pid_t  pgid)

Defines the Process Group ID (PGID) associated with this Arion instance.

Parameters
[in]pgidThe new PGID.

◆ set_pid()

void arion::Arion::set_pid ( pid_t  pid)

Defines the Process ID (PID) associated with this Arion instance.

Parameters
[in]pidThe new PID.

◆ set_resumed()

void arion::Arion::set_resumed ( )

Marks the emulation as running.

◆ set_run_bounds()

void arion::Arion::set_run_bounds ( std::optional< ADDR start = std::nullopt,
std::optional< ADDR end = std::nullopt 
)

Used to define start and end addresses for the emulation.

Parameters
[in]startStart address for the emulation.
[in]endEnd address for the emulation.

◆ set_run_end()

void arion::Arion::set_run_end ( std::optional< ADDR end)

Used to define end address for the emulation.

Parameters
[in]endEnd address for the emulation.

◆ set_run_start()

void arion::Arion::set_run_start ( std::optional< ADDR start)

Used to define start address for the emulation.

Parameters
[in]startStart address for the emulation.

◆ set_sid()

void arion::Arion::set_sid ( uint32_t  sid)

Defines the Session ID (SID) associated with this Arion instance.

Parameters
[in]sidThe new SID.

◆ set_stopped()

void arion::Arion::set_stopped ( )

Marks the emulation as stopped.

◆ set_uid()

void arion::Arion::set_uid ( uint32_t  uid)

Defines the User ID (UID) associated with this Arion instance.

Parameters
[in]uidThe new UID.

◆ set_zombie()

void arion::Arion::set_zombie ( )

Marks this process as a zombie (emulation stopped but parent still running).

◆ stop()

void arion::Arion::stop ( )

Stops emulating the process associated with this Arion instance.

◆ stop_afl_mode()

void arion::Arion::stop_afl_mode ( )

Clear out paremeters related to AFL fuzzing.

◆ sync_threads()

void arion::Arion::sync_threads ( )

Stops the emulation in order to synchronize the states of its threads. Emulation will be resumed after that synchronization.

Member Data Documentation

◆ afl_mode

bool arion::Arion::afl_mode = false
private

True if this Arion instance is being run through the ArionAfl component.

◆ afl_signals

std::vector<int> arion::Arion::afl_signals
private

List of UNIX signals that must be considered as process crashes when fuzzing with ArionAfl component.

◆ arch

std::unique_ptr<ArchManager> arion::Arion::arch

ArchManager instance associated with this instance.

◆ baremetal

std::unique_ptr<BaremetalManager> arion::Arion::baremetal

BaremetalManager instance associated with this instance.

◆ children

std::vector<std::weak_ptr<Arion> > arion::Arion::children
private

The Arion instances emulating the child processes of this process.

◆ config

std::unique_ptr<Config> arion::Arion::config

Config instance associated with this instance.

◆ context

std::unique_ptr<ContextManager> arion::Arion::context

ContextManager instance associated with this instance.

◆ cs

std::vector<csh *> arion::Arion::cs

Capstone engine related to this instance.

◆ egid

uint32_t arion::Arion::egid = 0
private

The EGID associated with the emulated process.

◆ end

std::optional<ADDR> arion::Arion::end = std::nullopt
private

End address for the emulation.

◆ euid

uint32_t arion::Arion::euid = 0
private

The EUID associated with the emulated process.

◆ fs

std::unique_ptr<FileSystemManager> arion::Arion::fs

FileSystemManager instance associated with this instance.

◆ gdt_manager

std::unique_ptr<GdtManager> arion::Arion::gdt_manager

GdtManager instance associated with this instance.

◆ gid

uint32_t arion::Arion::gid = 0
private

The GID associated with the emulated process.

◆ group

std::weak_ptr<ArionGroup> arion::Arion::group
private

The ArionGroup this process is associated with. Arion instances are emulated together through their group.

◆ hooks

std::unique_ptr<HooksManager> arion::Arion::hooks

HooksManager instance associated with this instance.

◆ ks

std::vector<ks_engine *> arion::Arion::ks

Keystone engine related to this instance.

◆ loader_params

std::unique_ptr<LNX_LOADER_PARAMS> arion::Arion::loader_params

Parameters related to the loader action.

◆ logger

std::unique_ptr<Logger> arion::Arion::logger

Logger instance associated with this instance.

◆ mem

std::unique_ptr<MemoryManager> arion::Arion::mem

MemoryManager instance associated with this instance.

◆ parent

std::weak_ptr<Arion> arion::Arion::parent
private

The Arion instance emulating the parent process of this process.

◆ pending_signals

std::vector<std::shared_ptr<SIGNAL> > arion::Arion::pending_signals

List of signals to be processed by this instance.

◆ pgid

pid_t arion::Arion::pgid = 0
private

The PGID associated with the emulated process.

◆ pid

pid_t arion::Arion::pid = 0
private

The PID associated with the emulated process.

◆ program_args

std::vector<std::string> arion::Arion::program_args
private

The program arguments of the emulated process, basically the "argv" array.

◆ program_env

std::vector<std::string> arion::Arion::program_env
private

The program environment variables of the emulated process, basically the "envp" array.

◆ running

bool arion::Arion::running = false
private

True if this instance is currently being run by its ArionGroup.

◆ sid

uint32_t arion::Arion::sid = 0
private

The SID associated with the emulated process.

◆ signals

std::unique_ptr<SignalManager> arion::Arion::signals

SignalManager instance associated with this instance.

◆ sock

std::unique_ptr<SocketManager> arion::Arion::sock

SocketManager instance associated with this instance.

◆ start

std::optional<ADDR> arion::Arion::start = std::nullopt
private

Start address for the emulation.

◆ stopped

bool arion::Arion::stopped = false
private

True if the emulation is currently stopped.

◆ sync

bool arion::Arion::sync = false
private

True if the emulation was stopped in order to synchronize the states of its threads.

◆ syscalls

std::unique_ptr<LinuxSyscallManager> arion::Arion::syscalls

LinuxSyscallManager instance associated with this instance.

◆ threads

std::unique_ptr<ThreadingManager> arion::Arion::threads

ThreadingManager instance associated with this instance.

◆ tracer

std::unique_ptr<CodeTracer> arion::Arion::tracer

CodeTracer instance associated with this instance.

◆ uc

uc_engine* arion::Arion::uc

Unicorn engine related to this instance.

◆ uc_exception

std::exception_ptr arion::Arion::uc_exception = nullptr
private

An Unicorn exception that occurred during execution and needs to be rethrown.

◆ uid

uint32_t arion::Arion::uid = 0
private

The UID associated with the emulated process.

◆ zombie

bool arion::Arion::zombie = false
private

True if the emulation has ended for this instance but not for its parent.


The documentation for this class was generated from the following file: