Open
Description
Modified program header is stored at the end of elf files. But, linker of Android4.1 read program header at the first PAGE in elf.
code of linker~~~~~~~~:
static soinfo *
load_library(const char *name)
{
...
if ((cnt = read(fd, &__header[0], PAGE_SIZE)) < 0) {
DL_ERR("read() failed!");
goto fail;
}
...
if (load_segments(fd, &__header[0], si) < 0) {
goto fail;
}
...
}
static int
load_segments(int fd, void *header, soinfo *si)
{
Elf32_Ehdr *ehdr = (Elf32_Ehdr *)header;
Elf32_Phdr *phdr = (Elf32_Phdr *)((unsigned char *)header + ehdr->e_phoff);
...
}
Metadata
Metadata
Assignees
Labels
No labels