no, le hice unas midificaciones :
fd = open (binary, O_RDONLY);
if (fd < 0)
die ("%s: open failed:", binary);
mmapf = mmap (NULL, filestats.st_size, PROT_READ
| PROT_WRITE, MAP_PRIVATE, fd, 0);
if (mmapf == MAP_FAILED)
die ("%s: mmap failed:", binary);
close (fd);
n = elf_check (binary, ehdr = (Elf32_Ehdr *) mmapf);
if (n < 0) {
printf ("exiting ...\n");
exit (EXIT_SUCCESS);
}
phdr = (Elf32_Phdr *) (mmapf + ehdr->e_phoff);
shdr = (Elf32_Shdr *) (mmapf + ehdr->e_shoff);
text = locate_segment (PT_LOAD, PF_R | PF_X);
data = locate_segment (PT_LOAD, PF_R | PF_W);
dyn = locate_segment (PT_DYNAMIC, PF_R | PF_W);
if (text == NULL)
die ("couldn't find text segment!?\n");
if (data == NULL)
die ("couldn't find data segment!?\n");
if (dyn == NULL)
die ("couldn't find dyn segment!?\n");
esta seccion me parecio que se podia optimizar, ya que el correr una peticion de archivo de esa forma se puede detectar en un linux BIEN configurado, puedes ver el codigo (este) en:
Necesitas ser usuario para ver los enlaces
Crear Usuario Hacer Sesionhay mas curiosidades ahi....
nota: esta en chino (literalmente)
Az