zelos.engine module

class zelos.engine.Engine(config=None, api=None)

Bases: object

STACK_SIZE = 589824
set_log_level(log_level)
log_api(args, isNative=False)
log_api_dbg(args)
hexdump(address: int, size: int) → None
property current_process
property emu
property memory
property scheduler
property thread_manager
property current_thread
property loader
property modules
property handles
set_mem_limit(limit_in_mb: int) → None
set_writetrace(target)
parse_file(filename)
load_executable(module_path, entrypoint_override=None)

This method simply loads the executable, without starting the emulation

property helpers

Helpers are the first layer in the components hierarchy, which mainly deal with providing help to developers.

load_library(module_name)
disas(address: int, size: int)

Disassemble code at the given address, for up to size bytes

step(count: int = 1) → None

Steps one assembly level instruction

step_over(count: int = 1) → None

Steps on assembly level instruction up to count instructions

start(count=0, timeout=0, swap_threads=True) → None

Starts execution of the program at the given offset or entry point.

close() → None

Handles the end of the run command

set_trace_on(val)
set_verbose(should_set_verbose: bool) → None

Used to set the verbosity level, and change the hooks. This prevents two types of issues:

  1. Running block hooks when printing individual instructions

    This will cause the annotations that are printed to be the values at the end of the block’s execution

  2. Running instruction hooks when not printing instructions

    This will slow down the emulation (sometimes considerably)

set_hook_granularity(granularity: zelos.enums.HookType.EXEC)