When executing a ELF binary, Linux kernel will pass the memory address of PHDR(program header) to userspace by AT_PHDR
entry of AUXV
.
ld.so
interpreter will parse the PHDR structure at memory addressAT_PHDR
and resolve more ELF structures, such as dynamic section.
But Linux kernel wrongly calculate the PHDR address in memory.
NEW_AUX_ENT(AT_PHDR, load_addr + exec->e_phoff);