增加新的节,节的名称既可以参考修改节名称的方式从常见的节名称中随机选择,也可以直接随机生成,这里我们介绍随机生成节名称的方法,在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, ]))