9.5 增加节

增加新的节,节的名称既可以参考修改节名称的方式从常见的节名称中随机选择,也可以直接随机生成,这里我们介绍随机生成节名称的方法,在ASCII表中“.”~“z”之间随机生成6位字符:


binary = lief.PE.parse(self.bytez)
new_section = lief.PE.Section(
    "".join(chr(random.randrange(ord('.'), ord('z'))) for _ in range(6)))

然后随机生成长度,并随机生成内容:


upper = random.randrange(256)
L = self.__random_length()
new_section.content = [random.randint(0, upper) for _ in range(L)]

从常见的节类型中选择一种,然后增加节,代码如下:


binary.add_section(new_section,
                   random.choice([
                       lief.PE.SECTION_TYPES.BSS,
                       lief.PE.SECTION_TYPES.DATA,
                       lief.PE.SECTION_TYPES.EXPORT,
                       lief.PE.SECTION_TYPES.IDATA,
                       lief.PE.SECTION_TYPES.RELOCATION,
                       lief.PE.SECTION_TYPES.RESOURCE,
                       lief.PE.SECTION_TYPES.TEXT,
                       lief.PE.SECTION_TYPES.TLS_,
                       lief.PE.SECTION_TYPES.UNKNOWN,
                   ]))