Browse Source

Merge pull request #11 from lab313ru/lab313ru-patch-1

Lab313ru patch 1
Artur K 8 years ago
parent
commit
bae2a582f1
2 changed files with 5 additions and 2 deletions
  1. 4 1
      3rd_party/libdisasm/libdis.h
  2. 1 1
      src/scanner.cpp

+ 4 - 1
3rd_party/libdisasm/libdis.h

@@ -317,7 +317,10 @@ struct x86_op_t{
             case op_offset:
                 return data.offset;
             case op_relative_far:
-                return (int32_t) data.relative_far;
+                if (data.relative_far & 0x8000)
+                        return (data.relative_far & 0xFFFF) | 0xFFFF0000;
+		else
+			return (int32_t)data.relative_far;
             default:
                 assert(false);
                 break;

+ 1 - 1
src/scanner.cpp

@@ -330,7 +330,7 @@ static void decodeBranchTgt(x86_insn_t &insn)
     int32_t addr = tgt_op->getAddress();
     if(tgt_op->is_relative())
     {
-        addr +=  insn.addr+insn.size;
+        addr = (uint16_t)(addr + insn.addr + insn.size);
     }
     pIcode->ll()->replaceSrc((uint32_t)addr);
     pIcode->ll()->setFlags(I);