用Python在PE文件中搜索字符串



我使用Python 3.7来覆盖PE文件的资源部分中的一些数据。资源部分字符串表有一个1024个a的字符串。当我在十六进制编辑器中打开它时,我会看到所有的a。。

00 00 28 08 41 00 41 00 41 00 41 00 41 00 41 00 41 00 41 00 41 00 41 00

我用这个来查找文件中的A。

if b'x00A'*1024 in file:
s=file.replace(b'x00A'*1024, message)

然而,这最终失败了。如果我将1024更改为1023,它会起作用,但最终会在字符串表的开头留下一个"a"。所以,如果我想用B覆盖所有的A,它最终会变成…

ABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB...

我确信这是因为我只在搜索1023,它留下了一个a。但我不知道为什么它找不到它。我已经复制了A的十六进制,它包含1024 41和1024 00,所以它都在那里。

更新:将if语句更改为:

if b'A' + b'x00A'*2087 in file:

它似乎发现了第一个A。感谢@Kevin

PE文件中的字节序列以Ax00开头,但您正在搜索x00A,因此第一个A不匹配。将测试字符串更改为b'Ax00'*1024

最新更新