robertdfrench/ifuncd-up

What stops a program from modifying its own GOT?

robertdfrench opened this issue · 1 comments

PLT entries have to know where the GOT is so that they can dereference their way to the resolver function. So if you know the address of the GOT, what stops you from overwriting it at will? Why does the linker need to be involved at all?

Just like #1, this is a RELRO thing. In partial relro, all the ifuncs are resolved ahead of time. Partial RELRO is the default, so this is the scenario we need to work with.