bugmeout / pyemu

Automatically exported from code.google.com/p/pyemu
0 stars 0 forks source link

Address overflow on reg + sib + disp8 #9

Open GoogleCodeExporter opened 9 years ago

GoogleCodeExporter commented 9 years ago
What steps will reproduce the problem?
1. Execute the following Assembly line:
mov ebx, DWORD PTR SS:[EBP-14]

The negative Number -4 will be stored as 0xffffffec in op.displacement and just 
added to address which will result in an address higher then 2**32.

I am using the current svn source tree.

FIX (works for me):

545a546,547
>         if value == False:
>             print "failed to read from %x, len: %d"%(address,size)
1503a1506
>                     address = address & 0xffffffff
1506a1510,1512
>                         print "Address: 0x%x"%address
>                         print "op.basereg: 0x%x"%op.basereg
>                         print "op.displacement: 0x%x"%op.displacement
1564c1570
<                     

---
>                     address = address & 0xffffffff
1704c1710
<                     

---
>                     address = address & 0xffffffff
1706a1713,1715
>                         print "Address: 0x%x"%address
>                         print "op.basereg: 0x%x"%op.basereg
>                         print "op.displacement: 0x%x"%op.displacement
1764c1773
<                     

---
>                     address = address & 0xffffffff

Be advised that the error is possibly also located in other instructions using 
offsets.

Original issue reported on code.google.com by felix.ma...@rwth-aachen.de on 8 Jan 2011 at 9:44