我目前正在以编程方式尝试操作PE文件的工作。到目前为止,该方法一直是从原始字节数组中解析出所有信息(标题,标题中的变量等),代表PE文件。
因此,我目前有大约70个变量,每个变量指向数组的不同字节片,表示有关PE的数据。问题来自于尝试现在操纵数组,并更改文件。
假设我希望在字节数组的任意点插入/添加数据。 35个变量在它之前,而35个变量在插入点之后。较早的变量不受影响。更新这35个变量的最佳方法是将它们的位置偏移N个字节?
变量具有的当前信息是a)它们在它们所在位置的值(通常是4字节的小端值),以及b)它们与PE文件开头的绝对偏移量。
干杯。
答案 0 :(得分:0)
我认为您应该使用struct
模块中的namedtuple
和collections
。将逻辑单位收集到namedtuple
并使用struct
打包/解包这些namedtuple
。这是最具可读性的一个'并且'可维护'如何实现它。
要记住的另一件事是以二进制模式读取文件并使用read
代替readlines
和tell
以及seek
来只读取您的内容利益。