From 91033dd0f039185635df8b3209d81048fd5fb688 Mon Sep 17 00:00:00 2001 From: Nguyen Anh Quynh Date: Wed, 25 Jul 2018 13:34:15 +0800 Subject: [PATCH] x86: fix #968 --- uc.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/uc.c b/uc.c index ef5ef23c..3c6f87ff 100644 --- a/uc.c +++ b/uc.c @@ -548,9 +548,15 @@ uc_err uc_emu_start(uc_engine* uc, uint64_t begin, uint64_t until, uint64_t time switch(uc->mode) { default: break; - case UC_MODE_16: - uc_reg_write(uc, UC_X86_REG_IP, &begin); + case UC_MODE_16: { + uint16_t cs; + uint64_t ip; + + uc_reg_read(uc, UC_X86_REG_CS, &cs); + ip = begin - cs; + uc_reg_write(uc, UC_X86_REG_IP, &ip); break; + } case UC_MODE_32: uc_reg_write(uc, UC_X86_REG_EIP, &begin); break;