Question

Let's say I've the following set of instructions:

00E79E00  | E8 AE580000   CALL    someprocess.00E7F6B3
00E79E05  | 85C0          TEST    EAX, EAX
(output taken from OllyDbg)

How do I encode the rel32 offset from the near call(0xE8) so I can get the absolute position I can jump to?

I know that the offset is relative to the next instruction and is calculated by subtracting the target with it. My question is: how do I 'reverse' this so I get the function addres 00E7F6B3 from the relative offset AE580000

Was it helpful?

Solution

You just take the address of the next instruction (00E79E05) and add the 32-bit signed offset from the instruction (58AE, little endian, remember?)

00E79E05
+   58AE
--------
00E7F6B3

OTHER TIPS

It's fairly trivial, really:

Origin = E79E00
Target = E7F6B3
Offset =   58AE

Target = Origin + Offset + 5 (5 being the size of the call instruction)
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top