From 1facd052c1c17cf1cc5a5d84e4c2a7d7efb73718 Mon Sep 17 00:00:00 2001 From: _xeroxz Date: Sun, 8 Aug 2021 13:39:37 -0700 Subject: [PATCH] converted linear virtual addresses to image based addresses... --- src/vmemu_t.cpp | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/src/vmemu_t.cpp b/src/vmemu_t.cpp index 0b2178e..9bc6886 100644 --- a/src/vmemu_t.cpp +++ b/src/vmemu_t.cpp @@ -214,7 +214,25 @@ namespace vm for ( auto &[ code_block, cpu_ctx, vm_ctx ] : code_blocks ) { - // code_block.vip_begin = ( code_block.vip_begin - g_vm_ctx->module_base ) + g_vm_ctx->image_base; + // convert linear virtual addresses to image based addresses... + code_block.vip_begin = ( code_block.vip_begin - g_vm_ctx->module_base ) + g_vm_ctx->image_base; + if ( code_block.jcc.has_jcc ) + { + switch ( code_block.jcc.type ) + { + case vm::instrs::jcc_type::branching: + { + code_block.jcc.block_addr[ 0 ] = + ( code_block.jcc.block_addr[ 0 ] - g_vm_ctx->module_base ) + g_vm_ctx->image_base; + } + case vm::instrs::jcc_type::absolute: + { + code_block.jcc.block_addr[ 1 ] = + ( code_block.jcc.block_addr[ 1 ] - g_vm_ctx->module_base ) + g_vm_ctx->image_base; + break; + } + } + } entries.push_back( code_block ); }