9.6 节内追加内容

已经存在的节通常包含真正意义上运行的代码,所以对现有的节的修改要非常谨慎,最保守的办法是在末尾追加随机内容。通常PE文件的节中的末尾都有预留的空间,没有实际运行的代码,可以把我们随机生成的内容写到这部分空间。我们随机选择现有的一个节,计算其预留空间的长度和位置,代码如下:


binary = lief.PE.parse(self.bytez)
targeted_section = random.choice(binary.sections)
L = self.__random_length()
available_size = targeted_section.size - len(targeted_section.content)
if L > available_size:
    L = available_size

随机生成数据长度,如果大于预留空间大小则进行截断,然后随机生成内容并填充到节的内容的末尾:


upper = random.randrange(256)
targeted_section.content = targeted_section.content + \
    [random.randint(0, upper) for _ in range(L)]