VMProfiler  v1.8
vmprofiler is a c++ library which is used to statically analyze VMProtect 2 polymorphic virtual machines. This project is inherited in vmprofiler-qt, vmprofiler-cli, and vmemu.
Public Member Functions | Public Attributes | List of all members
vm::ctx_t Class Reference

vm::ctx_t class is used to auto generate vm_entry, calc_jmp, and other per-vm entry information... creating a vm::ctx_t object can make it easier to pass around information pertaining to a given vm entry... More...

#include <vmctx.hpp>

Public Member Functions

 ctx_t (std::uintptr_t module_base, std::uintptr_t image_base, std::uintptr_t image_size, std::uintptr_t vm_entry_rva)
 default constructor for vm::ctx_t... all information for a given vm entry must be provided... More...
 
bool init ()
 init all per-vm entry data such as vm_entry, calc_jmp, and vm handlers... More...
 

Public Attributes

const std::uintptr_t module_base
 
const std::uintptr_t image_base
 
const std::uintptr_t vm_entry_rva
 
const std::uintptr_t image_size
 
vmp2::exec_type_t exec_type
 the order in which VIP advances... More...
 
zydis_routine_t vm_entry
 
zydis_routine_t calc_jmp
 
std::vector< vm::handler::handler_tvm_handlers
 all the vm handlers for the given vm entry... More...
 

Detailed Description

vm::ctx_t class is used to auto generate vm_entry, calc_jmp, and other per-vm entry information... creating a vm::ctx_t object can make it easier to pass around information pertaining to a given vm entry...

Constructor & Destructor Documentation

◆ ctx_t()

vm::ctx_t::ctx_t ( std::uintptr_t  module_base,
std::uintptr_t  image_base,
std::uintptr_t  image_size,
std::uintptr_t  vm_entry_rva 
)
explicit

default constructor for vm::ctx_t... all information for a given vm entry must be provided...

Parameters
module_basethe linear virtual address of the module base...
image_baseimage base from optional nt header... IMAGE_OPTIONAL_HEADER64...
image_sizeimage size from optional nt header... IMAGE_OPTIONAL_HEADER64...
vm_entry_rvarelative virtual address from the module base address to the first push prior to a vm entry...

Member Function Documentation

◆ init()

bool vm::ctx_t::init ( )

init all per-vm entry data such as vm_entry, calc_jmp, and vm handlers...

Returns
returns true if no errors...

Member Data Documentation

◆ calc_jmp

zydis_routine_t vm::ctx_t::calc_jmp

◆ exec_type

vmp2::exec_type_t vm::ctx_t::exec_type

the order in which VIP advances...

◆ image_base

const std::uintptr_t vm::ctx_t::image_base

◆ image_size

const std::uintptr_t vm::ctx_t::image_size

◆ module_base

const std::uintptr_t vm::ctx_t::module_base

◆ vm_entry

zydis_routine_t vm::ctx_t::vm_entry

◆ vm_entry_rva

const std::uintptr_t vm::ctx_t::vm_entry_rva

◆ vm_handlers

std::vector< vm::handler::handler_t > vm::ctx_t::vm_handlers

all the vm handlers for the given vm entry...


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