moving instructions to another address

Nick Clifton nick@nickclifton.clara.co.uk
Fri Jun 7 12:55:00 GMT 2013


Hi Sebastian,

 > I'm not sure if this is the right place to ask but I'll do it
 > nevertheless.

It is certainly a good place to ask.  You might also want to try asking 
on the gdb mailing list, since this is the sort of thing that debuggers do.

> Currently I try to write a library which can hook into any function you
> know the address of. That means that the lib overwrites to first few
> instructions of the function with a jmp (or something similar) to
> another function. If you want to call the original function you need to
> execute the instructions which are overwritten by the jmp instruction.
> The lib currently mmaps memory and writes them there (trampoline). This
> somehow worked well but I'm sure that moving instruction to another
> address may cause undefined behavior. Is there something in binutils I
> can use to make it safe?

Sorry no.

> And is it even possible?

Possible yes.  But to do it in a clean portable way that will continue 
to work as operating systems evolve - probably not.

There are similar sorts of things that you might want to consider - 
overlays for example, or ifuncs, or even the breakpoint mechanism used 
by debuggers.

Cheers
   Nick



More information about the Binutils mailing list