What is the meaning of this kind of jmp instruction in x86 assembly in IDA?
Does it mean that we should jump to the address [6CA2E9B0] + 8
or [6CA2E9B0+8]
?
When I follow that off_XXX, I get to the memory region that looks like this:
Is this some kind of a jump table? loc_6C954360
is indeed pointed by the address 6CA2E9B0
, does it mean that the instruction in question jumps to the address pointed by 6CA2E9B0+8
? If that's the case, then I must've messed something up in the debugger as the computed address didn't seem to be the same as the one stored in memory.
EDIT:
I read about the FF /5
jump which I believe is present here:
It should load to EIP
the far address stored in the memory location specified by the 4 bytes next to the FF 25
. And it seems like it is how it works, as I managed to see that happening in the debugger. However, the address after FF 25
is slightly modified when the library is loaded into a process, are those addresses somehow adjusted once the process starts using the library?
Also what is the point of this kind of jumps, why are functions defined in this way?